こんにちは、しょーいです。

私は業務上、複数の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を利用してみてください!!!

スポンサーリンク