Chatworkのタスクを取得してエクセルに書き出すVBAプログラムを紹介します。
・VBAプログラム入りのエクセルをダウンロード可能
それでは以下で詳しく紹介していきます。
目次
- 1 VBAでChatworkのタスクを取得してエクセルへ出力
- 2 VBA入りのエクセルファイルをダウンロード
- 3 VBA作成前の2つの準備
- 4 VBAのプログラムソース解説
- 4.1 プログラム0|変数宣言の指定
- 4.2 プログラム1|プログラム開始
- 4.3 プログラム2|シート設定
- 4.4 プログラム3|APIトークンを設定
- 4.5 プログラム4|Chatworkの投稿先チャンネルとurlを取得
- 4.6 プログラム5|Chatworkのタスク名を取得
- 4.7 プログラム6|リクエストに対してサーバーからテキストがなければプログラム終了
- 4.8 プログラム7|リクエストに対してサーバーからテキストを取得
- 4.9 プログラム8|正規表現を使った置換の下準備(プログラム9の準備)
- 4.10 プログラム9|ユニコードエスケープされた文字を日本語に変換
- 4.11 プログラム10|取得したタスク情報を分割
- 4.12 プログラム11|チャットワークのタスクごとにエクセルに書き出す
- 4.13 プログラム12|オブジェクト解放
- 4.14 プログラム13|プログラム終了
- 5 Excel VBAについて詳しく理解したいなら
- 6 VBAを自分で書けるようになる
VBAでChatworkのタスクを取得してエクセルへ出力
Chatworkでは以下のようにタスクを設定することができます。
このタスクをVBAを通じて取得し、以下のようにエクセルに書き出します。
このページでは、「Chatworkのタスクをエクセルに書き出すVBAプログラム」を紹介します。
このプログラムの使用手順は以下のとおりです。
手順1. ChatworkのAPI TOKENを取得
手順2. Chatworkのタスクを取得したいROOMのIDを入力
手順3. Chatworkのタスク内容を入力するエクセルのヘッダー情報を表示
手順4. VBAプログラムを実行
以下で使い方の手順を紹介します。
手順1. ChatworkのAPI TOKENを確認
こちらのchatworkにアクセスし、以下の手順でAPI TOKENを確認します。もしAPI TOKENを持っていない場合は、API TOKENを作成します。
2. 「サービス連携」をクリック
3. 「API Token」をクリック
4. 「パスワード」を入力
5. 「表示」をクリック
6. 「API Token」を取得
上記の手順でエクセルにAPI TOKENを入力します。
このページで紹介している事例では、セルB2にAPI TOKENを入力します。
このAPI TOKENがないとChatworkとの連携ができませんので、設定が必要です。
もしAPI TOKENについてよく分からない人がいるのであれば、こちらのChatworkのページをご覧ください。
手順2. Chatworkのタスクを取得したいROOMのIDを入力
今回のメッセージを通知したいroom(channel)をセルB3に入力します。
ROOMのIDは以下のとおり、ridの後ろの赤字の数値部分です。
→「227462111」をセルB3に入力
必要情報は上記の「rid」の後の数値です。ここでは「227462111」です。
このようにメッセージ通知したいchatworkのチャンネルをクリックしてURLをチェックして、情報を調べます。
手順3. Chatworkのタスク内容を入力するエクセルのヘッダー情報を表示
B列:タスク担当者
C列:タスク内容
D列:期限
E列:状況
A列:Task_ID
チャットワークのタスクごとに設定されたIDを書き出します。
このIDを取得しておくと、エクセル上でタスクを終了させることも可能になります。
なおエクセルVBAでタスクを終了させる方法は、このページで紹介する内容とは別です。
B列:タスク担当者
タスク担当者をチャットワークの名前で出力します。
C列:タスク内容
タスク内容を出力します。
D列:期限
タスクの完了期限を日付で出力します。
E列:状況
ここにはopenが出力されます。
なお現在タスクとして動いているものだけをエクセルに出力するので、全てopenが出力されます。
手順4. VBAプログラムを実行
手順1~手順3の作業が完了したら、VBA(マクロ)を実行します。
VBAを実行すると、Chatworkにタスクをエクセルに出力します。
上記のとおり、エクセルにChatworkのタスクを一覧にできました。
ボタンにVBAプログラムを登録する方法
本ページではVBAプログラムをボタンに登録しています。
ボタンにVBAプログラムを登録することで、ボタンを押下しプログラムを実行することができます。
ボタンをVBAプログラムを設定したい場合は、以下で動画も交えて設定方法を紹介しているので、そちらをご覧ください。
それでは、以下でプログラムについて詳細を説明します。
VBA入りのエクセルファイルをダウンロード
以下で紹介しているVBAプログラムをそのまま使いたい人は、以下のフォームからダウンロードできます。
登録したメールアドレスへVBA入りのファイルを送信します。
本プログラムの内容をそのまま使用可能です。ぜひお仕事にお役立てください。
Google Form
VBA作成前の2つの準備
ExcelでVBAを使うためにはいくつかの準備が必要です。
具体的には以下です。
準備2. 「Microsoft XML v6.0」の参照設定を変更
上記の2つに関して、以下で説明します。
準備1. ExcelでVBAを使うための事前準備
Excelで、以下の2つの準備をします。
2. 開発タブを追加
保存ファイルの拡張子変更、Excelの基本設定変更の2つです。
2つともで難しい作業はなく、それぞれ1分もあれば設定変更可能です。
上記に関しては、以下の記事で解説をしています。
もしVBAを使うための準備段階に不安がある人は上記をご覧ください。
この内容は以下の動画で紹介しています。
入門エクセルマクロの使い方|マクロ作成から実行までを徹底解説
文字や画像だけで分かりづらい人は上記の動画をご覧ください。
準備2. 「Microsoft XML v6.0」の参照設定を変更
エクセルVBAでChatworkにメッセージを送信するために、VBAの設定を変更しておく必要があります。
実はVBAのデフォルト設定の場合、メール送信操作はできません。
参照設定を変更することで、Chatworkにメッセージ送信が可能になります。
参照設定の変更手順は以下のとおりです。
手順2. 「参照設定」を選択
手順3. 「Microsoft XML v6.0」にチェックを入れる
手順4. OKをクリック
手順を以下で説明します。
上記の設定をしていないと、本事例で紹介しているChatworkのメッセージ通知は動作しません。必ずチェックを入れるようにします。
それでは、以下でプログラムについて詳細を説明します。
VBAのプログラムソース解説
今回紹介するプログラムの概要は以下です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
'プログラム0|変数設定の指定 Option Explicit 'プログラム1|プログラム開始 Sub GetChatworkTasks() 'プログラム2|シート設定 Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") 'プログラム3|APIトークンを設定 Dim apitoken As String apitoken = ws.Range("B2").Value 'プログラム4|Chatworkの投稿先チャンネルとurlを取得 Dim roomid As String, url As String roomid = ws.Range("B3").Value url = "https://api.chatwork.com/v2/rooms/" + roomid + "/tasks?" 'プログラム5|HTTPリクエストでデータ取得 Dim objHTTP As XMLHTTP60 Set objHTTP = New XMLHTTP60 With objHTTP .Open "GET", url .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "X-ChatWorkToken", apitoken .send End With 'プログラム6|リクエストに対してサーバーからテキストがなければプログラム終了 If objHTTP.responseText = "" Then Exit Sub End If 'プログラム7|リクエストに対してサーバーからテキストを取得 Dim strresult As String strresult = objHTTP.responseText 'プログラム8|正規表現を使った置換の下準備(プログラム9の準備) Dim re As Object Set re = CreateObject("VBScript.RegExp") With re .Pattern = "\\u([a-fA-F0-9]{4})" .Global = True .IgnoreCase = True .MultiLine = True End With 'プログラム9|ユニコードエスケープされた文字を日本語に変換 Dim mc As Object, m As Object, s As Variant Set mc = re.Execute(strresult) For Each m In mc For Each s In m.submatches strresult = Replace(strresult, "\u" & s, ChrW("&h" & s)) Next Next 'プログラム10|取得したタスク情報を分割 Dim i As Long, k As Long Dim x() As String x = Split(strresult, "{""task_id"":") 'プログラム11|チャットワークのタスクごとにエクセルに書き出す Dim n0, n1 As Long, n2 As Long, n3 As Long, n4 As Long, n5 As Long, n6 As Long, n7 As Long, n8 As Long Dim task_id As String, name As String, body As String, limit_time As Long, status As String For i = LBound(x) + 1 To UBound(x) 'A列:Task_ID n0 = InStr(x(i), ",""account""") task_id = Mid(x(i), 1, n0 - 1) ws.Range("A6").Offset(k, 0).Value = task_id 'B列:タスク担当者 n1 = InStr(x(i), """name"":""") n2 = InStr(x(i), """,""avatar_image_url""") name = Mid(x(i), n1 + 8, n2 - n1 - 8) ws.Range("B6").Offset(k, 0).Value = name 'C列:タスク内容 n3 = InStr(x(i), """body"":""") n4 = InStr(x(i), """,""limit_time"":") body = Mid(x(i), n3 + 8, n4 - n3 - 8) ws.Range("C6").Offset(k, 0).Value = Replace(body, "\n", vbCrLf) 'D列:期限 n5 = InStr(x(i), """limit_time"":") n6 = InStr(x(i), ",""status"":") limit_time = Mid(x(i), n5 + 13, n6 - n5 - 13) ws.Range("D6").Offset(k, 0).Value = CDate(((limit_time + 32400) / 86400) + 25569) 'E列:状況 n7 = InStr(x(i), """status"":") n8 = InStr(x(i), """,""limit_type"":") status = Mid(x(i), n7 + 10, n8 - n7 - 10) ws.Range("E6").Offset(k, 0).Value = status k = k + 1 Next 'プログラム12|オブジェクト解放 Set objHTTP = Nothing 'プログラム13|プログラム終了 End Sub |
それでは、以下でプログラムを詳しく説明していきます。
プログラム0|変数宣言の指定
1 |
Option Explicit |
「Option Explicit」とは、変数宣言を強制するためのものです。
これを入れておくと、変数を定義していない場合、エラーが出ます。
つまり、「Option Explicit」を入力しておくことで、たとえば「Dim i」をあらかじめ入力しないと、「i」という変数を使えません。
もし「Option Explicit」を入力しているのに、「Dim i」を書かずに「i = 1」と書くと、エラーメッセージが表示されます。
実は、この機能はあくまでオプションです。「Option Explicit」を入力しなくても、プログラムは動きます。
しかし、これを入れておくことで、変数の誤記によるエラーを防止することができます。
結果的に、プログラム作成速度が上がるので、「Option Explicit」を入力することを習慣化することをオススメします。
プログラム1|プログラム開始
1 |
Sub GetChatworkTasks() |
「Sub GetChatworkTasks()」のプログラムを開始することを意味します。
VBAではプロシージャという単位でプログラムを呼び出します。
プロシージャの構文は下記となっています。
1 2 3 |
Sub プロシージャ名() '実行プログラム End Sub |
「Sub」で始まり「End Sub」で終わります。
プログラム2|シート設定
1 2 |
Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") |
「Sheet1」をwsとして設定します。
プログラム3|APIトークンを設定
1 2 |
Dim apitoken As String apitoken = ws.Range("B2").Value |
セルB2のapitokenとして取得します。
このapitokenがないとタスク取得できないので、事前に取得しておく必要があります。
apitokenの取得方法は、このページの準備段階で紹介しています。(ページ上部で説明しています)
プログラム4|Chatworkの投稿先チャンネルとurlを取得
1 2 3 |
Dim roomid As String, url As String roomid = ws.Range("B3").Value url = "https://api.chatwork.com/v2/rooms/" + roomid + "/tasks?" |
セルB3のroomidを取得して、その値をurlに組み込みます。
urlの値は以下のようになります。
1 2 3 4 5 6 |
Dim roomid As String, url As String roomid = ws.Range("B3").Value url = "https://api.chatwork.com/v2/rooms/" + roomid + "/tasks?" Debug.Print "url:" & url >>>url:https://api.chatwork.com/v2/rooms/227462111/tasks? |
このurlはタスクをgetするときに使用します。
プログラム5|Chatworkのタスク名を取得
1 2 3 4 5 6 7 8 9 |
プログラム5|HTTPリクエストでデータ取得 Dim objHTTP As XMLHTTP60 Set objHTTP = New XMLHTTP60 With objHTTP .Open "GET", url .setRequestHeader "Content-Type", "application/x-www-form-urlencoded" .setRequestHeader "X-ChatWorkToken", apitoken .send End With |
タスク情報を取得します。
プログラム6|リクエストに対してサーバーからテキストがなければプログラム終了
1 2 3 |
If objHTTP.responseText = "" Then Exit Sub End If |
HTTPリクエストで返ってきたレスポンステキストが存在しない場合、プログラムを終了します。
プログラム7|リクエストに対してサーバーからテキストを取得
1 2 |
Dim strresult As String strresult = objHTTP.responseText |
HTTPリクエストで返ってきたレスポンステキストを取得します。
Debug.Printでチェックしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
Dim strresult As String strresult = objHTTP.responseText Debug.Print "strresult:" & strresult >>>strresult: >>>[ >>> { >>> "task_id":216708210, >>> "account": >>> { >>> "account_id":5862890, >>> "name":"Gene320", >>> "avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png" >>> }, >>> "assigned_by_account": >>> { >>> "account_id":1587942, >>> "name":"XXXX", >>> "avatar_image_url":"XXXX" >>> }, >>> "message_id":"1446107513983336448", >>> "body":"\u8cc7\u6599A\u4f5c\u6210", >>> "limit_time":1621177200, >>> "status":"open", >>> "limit_type":"date" >>> }, >>> { >>> "task_id":216714094, >>> "account": >>> { >>> "account_id":5862890, >>> "name":"Gene320", >>> "avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png" >>> }, >>> "assigned_by_account": >>> { >>> "account_id":1587942, >>> "name":"XXXX", >>> "avatar_image_url":"XXXX" >>> }, >>> "message_id":"1446154296499372032", >>> "body":"\u8cc7\u6599B\u4f5c\u6210", >>> "limit_time":1621263600, >>> "status":"open", >>> "limit_type":"date" >>> }, >>> { >>> "task_id":216714396, >>> "account": >>> { >>> "account_id":5862890, >>> "name":"Gene320", >>> "avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png" >>> }, >>> "assigned_by_account": >>> { >>> "account_id":1587942, >>> "name":"XXXX", >>> "avatar_image_url":"XXXX" >>> }, >>> "message_id":"1446154206560952320", >>> "body":"\u8cc7\u6599C\u4f5c\u6210", >>> "limit_time":1621350000, >>> "status":"open", >>> "limit_type":"date" >>> } >>>] |
上記のような形でレスポンスが返ってきます。
ちなみに3つのタスクが返ってきています。
「body」がユニコードエスケープされている
上記のレスポンスのbodyは、タスク内容を示しています。しかしユニコードエスケープされていて、日本語として表示されていません。
“body”:”\u8cc7\u6599A\u4f5c\u6210″,
“body”:”\u8cc7\u6599B\u4f5c\u6210″,
“body”:”\u8cc7\u6599C\u4f5c\u6210″,
そこで、これらの日本語に変換するプログラムを入れます。
プログラム8|正規表現を使った置換の下準備(プログラム9の準備)
1 2 3 4 5 6 7 8 |
Dim re As Object Set re = CreateObject("VBScript.RegExp") With re .Pattern = "\\u([a-fA-F0-9]{4})" .Global = True .IgnoreCase = True .MultiLine = True End With |
プログラム9で日本語に変換します。
ここは変換作業を行うための準備です。
プログラム9|ユニコードエスケープされた文字を日本語に変換
1 2 3 4 5 6 7 |
Dim mc As Object, m As Object, s As Variant Set mc = re.Execute(strresult) For Each m In mc For Each s In m.submatches strresult = Replace(strresult, "\u" & s, ChrW("&h" & s)) Next Next |
HTTPリクエストで返ってきたレスポンステキストを取得します。
Debug.Printでチェックしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
Dim mc As Object, m As Object, s As Variant Set mc = re.Execute(strresult) For Each m In mc For Each s In m.submatches strresult = Replace(strresult, "\u" & s, ChrW("&h" & s)) Next Next Debug.Print "strresult:" & strresult >>>strresult: >>>[ >>> { >>> "task_id":216708210, >>> "account": >>> { >>> "account_id":5862890, >>> "name":"Gene320", >>> "avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png" >>> }, >>> "assigned_by_account": >>> { >>> "account_id":1587942, >>> "name":"XXXX", >>> "avatar_image_url":"XXXX" >>> }, >>> "message_id":"1446107513983336448", >>> "body":"資料A作成", >>> "limit_time":1621177200, >>> "status":"open", >>> "limit_type":"date" >>> }, >>> { >>> "task_id":216714094, >>> "account": >>> { >>> "account_id":5862890, >>> "name":"Gene320", >>> "avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png" >>> }, >>> "assigned_by_account": >>> { >>> "account_id":1587942, >>> "name":"XXXX", >>> "avatar_image_url":"XXXX" >>> }, >>> "message_id":"1446154296499372032", >>> "body":"資料B作成", >>> "limit_time":1621263600, >>> "status":"open", >>> "limit_type":"date" >>> }, >>> { >>> "task_id":216714396, >>> "account": >>> { >>> "account_id":5862890, >>> "name":"Gene320", >>> "avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png" >>> }, >>> "assigned_by_account": >>> { >>> "account_id":1587942, >>> "name":"XXXX", >>> "avatar_image_url":"XXXX" >>> }, >>> "message_id":"1446154206560952320", >>> "body":"資料C作成", >>> "limit_time":1621350000, >>> "status":"open", >>> "limit_type":"date" >>> } >>>] |
上記のとおり、必要箇所が日本語に変換されています。
このデータをもとにエクセルに書き出す箇所を取得していきます。
プログラム10|取得したタスク情報を分割
1 2 3 |
Dim i As Long, k As Long Dim x() As String x = Split(strresult, "{""task_id"":") |
プログラム9で取得したstrresult(タスク情報)をタスクごとに分割します。
1 2 3 4 5 6 7 8 9 10 |
Dim i As Long, k As Long Dim x() As String x = Split(strresult, "{""task_id"":") For i = LBound(x) + 1 To UBound(x) Debug.Print i, x(i) Next >>>1 216708210,"account":{"account_id":5862890,"name":"Gene320","avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png"},"assigned_by_account":{"account_id":1587942,"name":"XXXX","avatar_image_url":"XXXX"},"message_id":"1446107513983336448","body":"資料A作成","limit_time":1621177200,"status":"open","limit_type":"date"}, >>>2 216714094,"account":{"account_id":5862890,"name":"Gene320","avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png"},"assigned_by_account":{"account_id":1587942,"name":"XXXX","avatar_image_url":"XXXX"},"message_id":"1446154296499372032","body":"資料B作成","limit_time":1621263600,"status":"open","limit_type":"date"}, >>>3 216714396,"account":{"account_id":5862890,"name":"Gene320","avatar_image_url":"https://appdata.chatwork.com/avatar/ico_default_orange.png"},"assigned_by_account":{"account_id":1587942,"name":"XXXX","avatar_image_url":"XXXX"},"message_id":"1446154206560952320","body":"資料C作成","limit_time":1621350000,"status":"open","limit_type":"date"}] |
上記のようにタスクごとにデータを分割できました。
次のプログラムで分割したデータから情報を取得していきます。
プログラム11|チャットワークのタスクごとにエクセルに書き出す
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
Dim n0, n1 As Long, n2 As Long, n3 As Long, n4 As Long, n5 As Long, n6 As Long, n7 As Long, n8 As Long Dim task_id As String, name As String, body As String, limit_time As Long, status As String For i = LBound(x) + 1 To UBound(x) 'A列:Task_ID n0 = InStr(x(i), ",""account""") task_id = Mid(x(i), 1, n0 - 1) ws.Range("A6").Offset(k, 0).Value = task_id 'B列:タスク担当者 n1 = InStr(x(i), """name"":""") n2 = InStr(x(i), """,""avatar_image_url""") name = Mid(x(i), n1 + 8, n2 - n1 - 8) ws.Range("B6").Offset(k, 0).Value = name 'C列:タスク内容 n3 = InStr(x(i), """body"":""") n4 = InStr(x(i), """,""limit_time"":") body = Mid(x(i), n3 + 8, n4 - n3 - 8) ws.Range("C6").Offset(k, 0).Value = Replace(body, "\n", vbCrLf) 'D列:期限 n5 = InStr(x(i), """limit_time"":") n6 = InStr(x(i), ",""status"":") limit_time = Mid(x(i), n5 + 13, n6 - n5 - 13) ws.Range("D6").Offset(k, 0).Value = CDate(((limit_time + 32400) / 86400) + 25569) 'E列:状況 n7 = InStr(x(i), """status"":") n8 = InStr(x(i), """,""limit_type"":") status = Mid(x(i), n7 + 10, n8 - n7 - 10) ws.Range("E6").Offset(k, 0).Value = status k = k + 1 Next |
上記の方法でデータを取得し、エクセルに書き出します。他のプログラム言語であれば、JSON形式で取得した情報を簡単に解析することが可能です。
しかしVBAには解析用のライブラリがないため、力技でやっています。
このプログラムを実行すると、以下のとおりエクセルにデータを書き出します。
画像
プログラム12|オブジェクト解放
1 |
Set objHTTP = Nothing |
プログラム10で設定したobjHTTPを解放します。
プログラム13|プログラム終了
1 |
End Sub |
プログラム1と対になるプログラムです。プログラム終了させる記載です。
「End Sub」を読み込むと、プログラムが終了します。
プログラムの解説はここまでです。
Excel VBAについて詳しく理解したいなら
VBAを活用すると、仕事を効率化できる幅を広げることができます。
たとえば私が実際にVBAを活用して効率化してきた作業は以下の記事で紹介しています。
興味がある人は以下の記事もご覧ください。
動画でも解説しています。
エクセルマクロVBAで出来ることを15の事例で紹介|日常業務をラクにするヒントを見つけよう!
(音声が小さいので、ボリュームを上げてご覧いただければと思います)
VBAの勉強方法
私はプログラミング初心者からVBAを勉強を始めて少しずつレベルアップしていきました。
成長の過程は以下で紹介しています。
学習の過程では、意識すべきポイントがあります。
特に独学の場合だと、勉強を優先してしまい、肝心な実践を疎かにしがちです。
私の経験では、実践から逆算した勉強が必要だと考えています。
目指すべきは会社でお金をもらいながら勉強することです。
要はVBAを仕事の一つとして上司に認めてもらうのです。
そうすればわざわざ高いお金を払って勉強をする必要がなくなります。
しかも作業を自動化して、会社やチームに貢献しつつ、自らのスキルアップできます。
そのために必要な考え方を以下で紹介しています。
とはいえ、プログラミング初心者でVBAについて知識ゼロの人もいるはずです。
いきなり会社でVBAで使うことさえ、とてつもなくハードルが高く見えてしまうものです。
その場合は、VBAの基本について学ぶ必要があります。
たとえば車の運転も慣れてしまえば、たいしたことではありません。
しかし教習所で運転の基本を学び、免許を取得することで、公道で運転できるようになります。
VBAも同じです。VBAに免許はありませんが、まずは基本を学ばないことには会社で使えるレベルにはなりません。
実際に私もプログラミング初心者のときは、動画を見たり書籍を読んだりして勉強しました。
今はオンラインの教材で無料で学習できるものも多いです。
上記のリンクでは、私の経験から勉強にオススメの教材を紹介しています。
興味がある人はご覧ください。
VBAを自分で書けるようになる
さて、本記事で紹介したマクロを利用すれば、作業の自動化が可能になります。
しかしデメリットもあります。それはカスタムできないことです。
なぜなら、色々な要望が増えるからです。
この動画を見たとき、「もっと○○ができるのでは?」や「ここはなんとかならないのか」と感じる人は少なくないはずです。
例えば、「他の条件を付け加えたい」や「日付毎に条件を変えたい」といった要望が出るかもしれません。
このような要望を満たすには、マクロを勉強して自力でマクロを編集できるようになる必要があります。
もし、自力でマクロを編集できるようになれば、今より仕事の効率はグッと上がります。
実際、私も自力でマクロを書けるようになってからは、仕事の生産性が一気に上がりました。
他の人が30分~1時間かけて行う仕事が、ボタン一つで終わらせることができるようになったのです。
その結果、周囲からの信頼も増し、仕事で高い評価を得られるようになりました。
ただ、要望に応えるようになるためには、マクロを学ぶ必要があります。
まずは無料でマクロを勉強してみる
ウェブや書籍で勉強すれば、マクロを習得できると考えている人は少なくありません。
しかし、仕事で使えるマクロを習得したいなら、仕事で使える部分に特化した教材で学ぶことをお勧めします。
なぜなら、ウェブや書籍には仕事に関係しない部分まで提供していることが多いからです。
例えば、マクロ初心者なのに配列を学ぼうとする人がいます。実は配列なしでも仕事で使えるマクロを書くことは可能です。
しかし、マクロ初心者ほど「全ての知識が必要だ」と考えて、無駄な学習に時間を使ってしまうのです。詳しくは、こちらの記事で紹介しています。
そこで、私がお勧めするのは仕事に直結するマクロ教材です。とくにお勧めするのは、こちらの無料オンライン動画です。
なぜなら、仕事に直結する部分に絞って、エクセルマクロを学ぶことができるからです。
マクロの作り方・考え方から解説しているので、教材をしっかり学べばここで紹介したマクロをゼロから書けるようになります。
マクロ初心者が、仕事に直結したいマクロを学ぶなら、まずはこちらの無料オンライン動画を試すのがいいです。
興味がある人は、まずは無料でエクセルマクロの勉強を始めてみてください。
もっと学びたいと感じたら、さらに深く勉強をしてみることをお勧めします。