こんにちは、しょーいです。
私は業務上、複数のLINEグループに同じメッセージを送ることがよくあります。
2,3個だったらまだいいのですが、最近ですと数が増えて30以上のグループが出来てしまいました。
そんな仕事を1つずつやっていたらキリがありませんよね。
普段から無駄なお仕事はすべて自動化!と息巻いているので、今回もVBAさんにお世話になります。
手作業で【コピペして各グループに貼り付けして送信】している業務を
【ボタン1クリック】で送れるようにするエクセルVBAコードの紹介です。
VBAの全体の設計図
複数のグループにメッセージを送る際に、手作業だと
・送るのが時間かかる
・どこに送ったかわからなくなる
・そもそもめんどくさい!
などなど、デメリットがたくさんです。
なので作りとしては。
・グループ名のリストから、送りたいグループを選択
・指定の場所にメッセージを入力
・ボタンを押すだけで送りたいグループに一斉送信!
こんな感じのシステムとなっております。
VBAのコード
Option Explicit Sub 出力1() On Error GoTo Ending Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Dim i, MsgSt, obj, DSHT, DKyo, token Set obj = CreateObject("Scripting.Dictionary") '社名とトークン記入欄 obj.Add "テストG1", "★ここにトークンを貼り付ける★" obj.Add "テストG2", "★ここにトークンを貼り付ける★" obj.Add "テストG3", "★ここにトークンを貼り付ける★" Set DSHT = ThisWorkbook.Sheets("送信先リスト") Set DKyo = DSHT.ListObjects("グループリスト").ListColumns("グループ名").DataBodyRange MsgSt = DSHT.Range("b2") If InStr(MsgSt, "%") >= 1 Then MsgSt = Replace(MsgSt, "%", "・") End If If InStr(MsgSt, "&") >= 1 Then MsgSt = Replace(MsgSt, "&", "・") End If For Each i In DKyo If i.Offset(0, 1) = "●" Then token = obj(i.Value) Call Line送信(MsgSt, token) End If Next i Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Exit Sub Ending: MsgBox "エラー発生・メッセージ送信しておりません" Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub Sub Line送信(Sndmsg, token As Variant) Dim MS, objHTTP As Object, LineStr As Variant LineStr = "message=" & Sndmsg Set objHTTP = CreateObject("MSXML2.XMLHTTP") objHTTP.Open "POST", "https://notify-api.line.me/api/notify", False objHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" objHTTP.setRequestHeader "Authorization", "Bearer " & token objHTTP.send LineStr End Sub
ちょっと長いですが、このコードをまんまコピーして、一部を直せばそのまま使えます。
★印がある部分を、ご自身のLINEグループのトークンに書き換えてください。
詳しくはこちらの記事を見てください。
エクセルからLINEにメッセージを送る【エクセル超かんたんVBA】
エクセル側のフォーマット
変数「MsgSt」で直接セルを指定しています。
B2セルに書き込むか、変数指定エリアをいじってください。
タブ名は「送信先リスト」
テーブル名は「グループリスト」
として指定してます。ここらへんもカスタマイズ可能。
「%」と「&」の変換ですが、LINE Notifyの仕様上、ここらへんの文字が入っていると送信されないことがありました。
(正規表現にかかわってくると思われます)
なので、念の為変換処理してます。URL等を送りたい際には気をつけてください。
VBAの使い方
何でもいいので画像にマクロを登録してボタンを押せば完成!
簡単ですね。かなりシンプルな仕様にしました。
メッセージも無事届いています。
もし送信出来ない場合は、LINE Notifyの基本部分を改めて確認してもらったほうが早いと思います。
今回のコードは必要最低限の内容なので。
かなりシンプルですが、使い方によってはかなり便利になるかと思います。
特にLINEを業務に利用していて、LINE公式程大きくはないけどグループが複数ある、といった企業さんなど。
ぜひ今回のコードを利用して、便利にVBAを利用してみてください!!!