この物語は、入瀟しお䞀幎目の新人瀟員が䞊叞の指南のもず、業務を自動化しおいく様を蚘したものです。物語はフィクションですが、自動化の手法は実際にパ゜コンやスマヌトフォンで実践できるものですので、物語ず自動化䜜業の䞡方を楜しめたす。(前回のストヌリヌはこちら)

僕田䞭はい぀になく熱心に仕事に励んでいた。ずいうのも、今回、秋の特別キャンペヌンのための特別任務を瀟長から任されたのだ。このプロゞェクトのために、10人ほどの短期アルバむトを募集した。぀たり、い぀も䞀番䞋っ端の僕が䞀時的にアルバむトのみんなを率いるリヌダヌずなる。もしかするず、次期リヌダヌの適性も枬られおいるのではずドキドキする。

そしお、仕事の内容は、いろいろな堎所に行っおビラ配りをしおもらうずいうものだ。ただし、最倧限に予算を掻甚するために、䞀人䞀カ所に留たるのではなく、それぞれが、いろいろな堎所に移動しながら、察象ずなるナヌザヌを探し぀぀、物件情報を手枡しするずいう䜜戊になっおいる。

ちなみに、読者の皆さんは、新人の僕が、䞀人でこの高床な䜜戊を指揮できるのだろうかず心配になったこずだろう。そう、僕も䞍安だったが、それ以䞊に、矎人の倪田先茩が䞍安に思っおくれたようだ。

先茩は「初の倧仕事ね。田䞭君なら倧䞈倫、頑匵っおね。」ず優しく蚀っおくれおいたものの、実際には心配しおどのようにやったら良いのかを手取り足取り教えおくれた。僕も倱敗する蚳にはいかないので、存分に倪田先茩に頌った。そしお、先茩の有胜さを改めお思い知ったのだった。

ずころで、去幎の担圓者に様子を聞いたずころ、移動しながらのビラ配りには欠点があるずいうこずが刀明した。䞀床ビラ配りを始めおしたうず、うっかり時間を忘れおしたうずいう人が続出し、予定の゚リアを党郚網矅するこずは出来なかったずいう。

そこで、先茩ず盞談しお今幎は、各グルヌプに察しお移動堎所を定期的にLINEで通知するずいう䜜戊を立おた。これなら、うっかり時間を忘れたり、行き先を間違えるず蚀うこずもないだろう。

その際、倪田先茩が僕に尋ねおきた。

「ねぇ、田䞭君、10人の人に同時にLINEするなんお、簡単だよね」

「え先茩、10人ですかヌヌヌえっず、はい。圓日は、根性出しおスマヌトフォンにかじり぀く所存です。」

僕の答えに、倪田先茩が凍り付いた。

「え田䞭君、手動でやる぀もりなの」

「え倪田先茩、手動以倖に方法があるんですか」

「もちろん、こんな時こそプログラミングでしょExcel VBAでも簡単にできるわ」

「ExcelからLINEぞメッセヌゞの送信ができるなんお、思いもしたせんでした。」

僕が感心しおいるず、倪田先茩がさらっず蚀った。

「田䞭君、さっき『根性』っお蚀ったけど、仕事で『根性出せ』なんお蚀われたら、それをプログラミングで解決できないか考えおみるのが倧切ね。」

こうしお、僕はExcelで予定衚を組み、それに基づいおVBAでLINEぞメッセヌゞを自動送信するプログラムを䜜ったのだった。

そしお、圓日、無事にプロゞェクトは完了した。その成果ずしお、有力な芋蟌み客からの問い合わせが数件あったようだ。こうしお、僕ず倪田先茩の初めおの共同䜜業は倧成功だった。

実際のプログラム

さお、今回、田䞭君ず倪田先茩が䜜ったプログラムは、Excel VBAからLINEのメッセヌゞを自動送信するずいうものです。実際に動かしおみたしょう。

今回のプログラムを利甚するのにあたっお、LINEのアカりントが必芁になりたす。最初にLINEの蚭定から行いたしょう。このために、LINE Notifyずいう機胜を利甚したす。LINE Notifyを利甚するず手軜に特定のグルヌプや個人にメッセヌゞを送信できたす。

【手順1LINE Notifyのサむトでトヌクンを取埗する】

たずは、LINE NotifyのWebサむトにアクセスしたす。

  • LINE Notifyを利甚するず手軜に自䜜のプログラムからメッセヌゞを送信できる

    LINE Notifyを利甚するず手軜に自䜜のプログラムからメッセヌゞを送信できる

画面右䞊にある「ログむン」のリンクをクリックし、LINEのアカりントを入力しおログむンしたす。このために、メヌルアドレスやパスワヌドを登録しおおく必芁がありたす。そしお、右䞊の自分の名前をクリックするず衚瀺されるメニュヌから「マむペヌゞ」をクリックしたす。

  • マむペヌゞをクリック

    マむペヌゞをクリック

続いお、画面の䞋の方にある「トヌクンを発行する」をクリックしたす。

  • トヌクンを取埗をクリック

    トヌクンを取埗をクリック

そしお、続いお出おくるグルヌプを遞択したす。ここでは、テストが簡単になるように『1:1でLINE Notifyから通知を受けずる』を遞びたしたが、実際にLINEで送信したいグルヌプを遞択したす。なお、グルヌプを遞択した堎合、グルヌプにLINE Notifyを招埅しおおく必芁がありたす。

  • グルヌプを遞択

    グルヌプを遞択

するず、トヌクンが発行されたす。ここで埗られたトヌクンを利甚しおメッセヌゞを送信したす。この倀を芚えおおきたしょう。

  • トヌクンを芚えおおく|

    トヌクンを芚えおおく

【手順2Excelで衚を䜜る】

次に、Excelを起動し、「䜕時、誰ぞ、どんなメッセヌゞを送るのか」を蚘入したす。この誰の郚分に、先ほど取埗したトヌクンを曞き蟌んでおきたす。

  • Excelで衚を䜜成しよう

    Excelで衚を䜜成しよう

【手順3VBAのプログラムを蚘述する】

[Alt] + [F11]キヌを抌しお、VBA゚ディタを起動したしょう。そしお、画面巊䞊にある[プロゞェクト]からSheet1を遞んでダブルクリックしたす。そしお、そこに以䞋のようなプログラムを蚘述したす。今回のプログラムは、WindowsのExcel専甚です。

' 䞀分に䞀回実行されるタむマヌを蚭定 --- (*1)
Sub CheckNext()
    nt = Now() + TimeValue("00:01:00")
    Application.OnTime nt, "Sheet1.CheckTime"
End Sub

' Sheet1に曞かれおいる時刻を確認 --- (*2)
Sub CheckTime()
    ima = Format(Now(), "hh:mm")
    ' 衚を最倧100件確認する
    For i = 2 To 100
        nanji = Format(Cells(i, 1), "hh:mm")
        If nanji = ima Then
            token = Cells(i, 2)
            msg = Cells(i, 3)
            LineSend token, msg
        End If
    Next
    CheckNext
End Sub

' tokenにmsgのLINEメッセヌゞを送信 --- (*3)
Sub LineSend(token, msg)
    Dim oXMLHTTP As Object
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    oXMLHTTP.Open "POST", _
        "https://notify-api.line.me/api/notify", _
        False
    oXMLHTTP.setRequestHeader _
        "Content-Type", _
        "application/x-www-form-urlencoded"
    oXMLHTTP.setRequestHeader _
        "Authorization", _
        "Bearer " & token
    oXMLHTTP.send _
        "message=" & msg
End Sub

【手順4:実行する】

カヌ゜ルを、サブルヌチン「CheckTime」に合わせた状態で実行ボタンをクリックしたす。 するず、タむマヌが開始され、定刻になるずLINEにメッセヌゞを送信したす。

  • LINEにメッセヌゞが送信された

    LINEにメッセヌゞが送信された

プログラムを確認しおみたしょう。このプログラムの(1)の郚分「CheckNext」では、䞀分埌にタむマヌを蚭定したす。このタむマヌは、䞀分埌にサブルヌチン「CheckTime」を実行するずいうものです。そしお、CheckTimeの最埌に、改めおCheckNextを呌び出すので、必ず䞀分に䞀床、時間をチェックするようになりたす。ここで実際にタむマヌを蚭定しおいるのが、Application.OnTimeです。匕数に、タむマヌ時刻ず実行するサブルヌチン名を指定するこずで、タむマヌを蚭定できたす。

次に(2)の郚分「CheckTime」では、Sheet1に曞かれおいる時刻を確認しお、同じ時刻があれば、LINEにメッセヌゞを送信するずいう凊理になっおいたす。ここでは、ちょっず手抜きしおSheet1の100行目たでをチェックするずいうものになっおいたす。100行以䞊になる堎合は、For構文の倀を増やしおください。

そしお、(3)の郚分では、Line Notifyを利甚しおLINEにメッセヌゞを送信したす。LINE Notifyではヘッダにあらかじめ取埗しおおいたトヌクンを指定するこずで、メッセヌゞを送信できるずいうものになっおいたす。

たずめ

以䞊、今回は、Excel VBAからLINEにメッセヌゞを送信するプログラムを玹介したした。なお、Excelを閉じるずタむマヌが停止しおしたうので、パ゜コンを起動しっぱなにしおおく必芁がありたす。䞀般的にパ゜コンを操䜜しないでいるず、スリヌプになっおしたうため、実際に運甚するずきには、スリヌプ蚭定を解陀するなど、ちょっず蚭定を倉える必芁がありたす。ずは蚀え、ExcelでLINEに送信するメッセヌゞを制埡できるので、いろいろな堎面で利甚できるでしょう。

自由型プログラマヌ。くじらはんどにお、プログラミングの楜しさを䌝える掻動をしおいる。代衚䜜に、日本語プログラミング蚀語「なでしこ」 、テキスト音楜「サクラ」など。2001幎オンラむン゜フト倧賞入賞、2004幎床未螏ナヌス スヌパヌクリ゚ヌタ、2010幎 OSS貢献者章受賞。技術曞も倚く執筆しおいる。