EC-CUBE管理画面に自動ログイン「ecCubeLogIn」の解説
前回、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
EC-CUBE管理画面に自動ログインのマクロ
Sub sample()
Dim objIE As InternetExplorer
Call ecCubeLogin(objIE, Range("eccubeurl"), Range("eccubeid"), Range("eccubepass"))
End Sub
実行結果
今回もEC-CUBE本家サイトのデモ管理画面を利用させてもらいます。
ログインに必要なIDとパスワードは以下となります。
- ID:admin
- パスワード:password
引数は以下の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・パスワードを設定し、そちらを読み込んでいます。
また、セルに名前定義を設定することで、カスタマイズでセル位置が変更になっても対応できるようにしています。
今回は以下のように名前定義を設定していますが、お好きな名前で設定してください。
Range("eccubeid")=ID
Range("eccubepass")=パスワード
Call ieView(objIE, eccubeURL)
まず、指定したURLをWebブラウザで表示させる「ieViewサブルーチン」を利用して、デモ版EC-CUBE管理画面を表示させます。
eccubeURLには管理画面のURLが設定されています。
ログインHTMLソース
<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・パスワードを削除し、保存する処理を追加します。
ログイン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部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。