VBAのIE(InternetExplorer)制御でEC-CUBEに自動ログインのサブルーチン化する方法について解説しています。
前回、EC-CUBE管理画面の自動ログインについて説明してきましたが、今回は自動ログインのサブルーチン化について解説します。
Sub ecCubeLogin(objIE As InternetExplorer, _
eccubeURL As String, _
eccubeId As String, _
eccubePass As String)
'EC-CUBE管理画面を表示
Call ieView(objIE, eccubeURL)
Call formText(objIE, "login_id", eccubeId)
Call formText(objIE, "password", eccubePass)
Call tagClick(objIE, "a", "LOGIN")
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
Sub sample()
Dim objIE As InternetExplorer
Call ecCubeLogin(objIE, Range("eccubeurl"), Range("eccubeid"), Range("eccubepass"))
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
今回もEC-CUBE本家サイトのデモ管理画面を利用させてもらいます。
ログインに必要なIDとパスワードは以下となります。
引数は以下の4つが設定されています。
引数名 | データ型 | 内容 | 値の事例 | 初期値 | 省略 |
---|---|---|---|---|---|
objIE | InternetExplorer | IEオブジェクト | objIE,objIE2 | × | |
eccubeURL | String | EC-CUBE管理画面のURL文字列 | "http://demo.ec-cube.net/admin/" | × | |
eccubeId | String | EC-CUBE管理画面のログインID文字列 | "admin" | × | |
eccubePass | String | EC-CUBE管理画面のログインパスワード文字列 | "password" | × |
「objIE」「eccubeURL」「eccubeId」「eccubePass」全て必須項目です。
、「objIE」は複数ページを表示させる場合に「objIE」「objIE2」と複数オブジェクトを生成します。
「eccubeURL」にはEC-CUBE管理画面のURL文字列を、「eccubeId」にはEC-CUBE管理画面のログインID文字列を、「eccubePass」にはEC-CUBE管理画面のログインパスワード文字列を設定します。
今回は、マクロ内に直接入力ではなく、セルにURL・ID・パスワードを設定し、そちらを読み込んでいます。
また、セルに名前定義を設定することで、カスタマイズでセル位置が変更になっても対応できるようにしています。
今回は以下のように名前定義を設定していますが、お好きな名前で設定してください。
Call ieView(objIE, eccubeURL)
※ドラッグ(スワイプ)すると全体を確認できます。
まず、指定したURLをWebブラウザで表示させる「ieViewサブルーチン」を利用して、デモ版EC-CUBE管理画面を表示させます。
eccubeURLには管理画面のURLが設定されています。
<form name="form1" id="form1" method="post" action="?">
<input type="hidden" name="transactionid" value="03464512eff7208376b9a9293d6aece406248980">
<input type="hidden" name="mode" value="login"><p><label for="login_id">ID</label></p>
<input type="text" name="login_id" size="20" class="box25"><p><label for="password">PASSWORD</label></p>
<input type="password" name="password" size="20" class="box25">
<p><a class="btn-tool-format" href="javascript:;" onclick="document.form1.submit(); return false;"><span>LOGIN</span></a></p>
</form>
※ドラッグ(スワイプ)すると全体を確認できます。
Call formText(objIE, "login_id", eccubeId)
Call formText(objIE, "password", eccubePass)
※ドラッグ(スワイプ)すると全体を確認できます。
次にテキストボックス・テキストエリアに値を入力する「formTextサブルーチン」を利用して、name=login_idのテキストボックスに「admin」、name=passwordのテキストボックスに「password」を自動入力します。
Call tagClick(objIE, "a", "LOGIN")
※ドラッグ(スワイプ)すると全体を確認できます。
最後に指定したタグをクリックする「tagClickサブルーチン」を利用して、aタグ内に「LOGIN」の文字列があるaタグをクリックします。
これでログイン完了となります。
こちらはセルに情報を変更することで様々なEC-CUBE管理画面へ自動ログインすることができます。
次にセキュリティの件ですが、ログインID・パスワードをそのままに保存するとデータが外部に漏れた場合に勝手にログインされてしまいます。
そのようなことがないように、ファイルを閉じるときにログインID・パスワードを削除し、保存する処理を追加します。
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'ID・パスワード初期化
Range("eccubeid") = ""
Range("eccubepass") = ""
'ブック保存
ThisWorkbook.Save
End Sub
※ドラッグ(スワイプ)すると全体を確認できます。
こちらでは「Workbook_BeforeCloseイベントマクロ」を利用しています。
こちらはファイルが閉じられるときに実行されるマクロで、ID・パスワードのセルを空白にし初期化しています。
その後にファイルを保存して閉じる処理としています。
こちらを設定することで、常にID・パスワードが初期化された状態になるので、外部に漏れることはありません。
他にもファイル自体にパスワードを掛ける方法もありますが、ファイルのパスワードは裏技を使うと簡単に解除することができるので、データを残さない方が安全な方法と言えます。
ここまでログイン方法について説明しましたが、ログイン処理をするにはフォームで操作するか、シート上にコマンドボタンあるいはオートシェイプを利用してマクロを設定する方法があります。
フォーム設置は説明がややこしくなるので、次回の「EC-CUBEをVBAで管理する方法」ではシート上で処理をする方法について、解説していきます。
次の記事: VBAのIE操作でEC-CUBEを管理する方法 >>
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。
↑VBAのIE操作で分からない事があればこちらの掲示板よりご質問ください。
ExcelのVBA初心者入門↑こちらはVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります。
こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。
こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。
こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。
こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。
こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。