
こんにちは、しょーいです。
私は業務上、複数の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を利用してみてください!!!





