前提・実現したいこと
VBAでIEのウィンドウを制御し、
webサイトで添付資料を登録する操作を自動化したいと考えています。
具体的には、以下のような操作です。
0. メイン画面で「資料添付」ボタンを押して資料添付用ポップアップウィンドウが開く
0. ポップアップにて「参照」ボタンを押してファイル選択ダイアログが開く
0. ファイル選択ダイアログで、クリップボードのファイルパスを貼り付けて「開く」を押す。
ポップアップのテキストボックスにファイルパスが表示される
0. ポップアップの「登録」ボタンを押す。
その後ポップアップの上部の表示が「資料登録中…」→「登録完了」と遷移する
そこで以下のようなコードを記述しました。
VBA
1 2Dim ie As InternetExplorer 'メイン画面 3Dim docIE As InternetExplorer '資料添付用ポップアップウィンドウ 4 5'メイン画面のオブジェクトを取得しieに格納する処理(省略) 6 7'資料添付ボタンをクリック。処理が続行できるようjavascriptに処理を渡す 8ie.document.parentWindow.execScript "window.setTimeout(""document.getElementsByTagName('INPUT')[55].click()"",50);" 9 10'資料添付用ポップアップのオブジェクトを取得しdocIEに格納する処理(省略) 11 12'参照ボタンをクリック 13docIE.document.parentWindow.execScript "window.setTimeout(""document.getElementsByTagName('INPUT')[2].click()"",50);" 14 15sleep (2000) 16SendKeys "^v" 'ファイル選択ダイアログでCtrl+Vを実行 17SendKeys "%o" 'ファイル選択ダイアログでAltl+oを実行 18 19sleep (2000) 20'登録ボタンをクリック 21docIE.document.parentWindow.execScript "window.setTimeout(""document.getElementsByTagName('INPUT')[14].click()"",50);"
発生している問題
上記のコードで一連の操作は上手く自動化できたのですが、
4で登録ボタンを押した時、指定したはずのファイルパスが送信されません。
テキストボックスにファイルパスが表示された状態で登録ボタンを押すのですが、
「資料登録中…」に遷移した段階で消えています(通常は消えない)
ファイルを選択せずに「登録」ボタンを押した場合はブラウザがエラーメッセージを出すので、
エラーチェック後のsubmit時に消えているのでしょうか…
試したこと
「参照」ボタンの押下を自動化せず手動でクリックすればファイルパスは消えません。
またjavascriptにclickさせるのではなく直接参照ボタンの要素を指定して
docIE.document.getElementsByTagName("INPUT")(2).Click
としても(そこで処理は止まってしまいますが)その後ファイルパスは消えません。
よって参照ボタンのクリックをjavascriptで行う処理に問題があると思われますが、
その原因や修正方法が分かりません。
ご存じの方居られましたらよろしくお願いします。
あなたの回答
tips
プレビュー