IT女子がお届けするオフィスワーク効率化・VBA技術紹介

ノンプログラマーによるノンプログラマーのためのやさしい解説付き

スポンサーリンク

【VBAでIE操作】毎日の出社時にアクセスするお決まりのWebサイトへ自動ログインするマクロ

朝出社して、PCを起動して、業務で使用する各種Webサイトにアクセスをして、IDとパスワードを入力して・・・、

あれっパスワードなんだっけ?
パスワード書いたメモはどこだっけ?

その毎日のお決まり作業、自動化できます。

f:id:excel-accounting:20180414233346p:plain:w400

VBAはInternet Explorerの操作もできちゃうんですよ!

早速筆者の工夫を紹介します。

事前準備

専用のExcelブックを用意し、下記のようにURL・ID・PWの入力欄を作ります。
f:id:excel-accounting:20180326211648p:plain


ID・PWを記載しているので、念のため該当列を非表示にして、
f:id:excel-accounting:20180326211744p:plain


シート保護をかけています。
(シート名を右クリック→シート保護)
f:id:excel-accounting:20180326211811p:plain

(エディタ上にベタ書きしてプロジェクトに保護をかける方法もありです)

参照設定

下記の2つにチェック
・Microsoft HTML Object Library
・Microsoft Internet Controls

ソースコード

※標準モジュールではなく、ThisWorkbookに記述します

Private Sub Workbook_Open()

Dim objIE As InternetExplorer
Set objIE = CreateObject("InternetExplorer.application")

Dim urlName As String
urlName = Range("B1").Value

objIE.Visible = True
objIE.navigate urlName
    
    Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE '読み込み待ち
        DoEvents
    Loop

Dim htmlDoc As HTMLDocument
Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット
'Idはサイトに応じて変更
htmlDoc.getElementById("userid_text").Value = Range("C1") 'ユーザIDを入力
htmlDoc.getElementById("passwd_text").Value = Range("D1") 'パスワードを入力

'ログインボタン(画像)をクリック
Dim objTag As Object
For Each objTag In htmlDoc.getElementsByTagName("img")
    If InStr(objTag.outerHTML, "ImageXX") > 0 Then
        objTag.Click
        Exit For
    End If
Next

End Sub

ポイント解説

①Workbook_Openメソッドを使用しているので、ブックを開くとマクロが自動実行されます。

そして、このブックのショートカットをWindowsのスタートアップに登録しておくと、
PC起動→ブックオープン→マクロ実行(ログイン)まで自動で実行されます。

②ログインボタンが画像リンクなので、imgタグを検索してクリックしています。
(詳細なHTMLは記載しませんが、img name="ImageXX"となっている)

最後に

筆者はこれで2システムの自動ログイン&必要な際に3システムの手動ログイン(マクロ実行用のボタンを用意しておく)をしています。

そもそも下記をなんとかしてほしいのですが、社内インフラ系は一社員の立場ではどうにもできませんね・・・

  • 社内システムが乱立している
  • それぞれが独立してID、PWをもっている
  • パスワードの設定規則、有効期間が異なる

塵も積もれば山となる。日次作業の自動化でVBAの効果を発揮しましょう!

スポンサーリンク