VBAでInternetExplorerを自動操作し、以下の操作を行ないたいです。
「アップロードするファイルを選択」ダイアログを開く
↓
ファイル名入力欄にファイル名を入力
↓
「開く」をクリック
対象のhtmlコードは以下です。
html
1<html xmlns:fb="http://ogp.me/ns/fb#" xml:lang="ja" lang="ja" data-scope-controller="users" data-scope-action="users_login"> 2<head profile="http://gmpg.org/xfn/11"> 3 4<input class="itemImgFileInput" type="file" multiple="multiple"> 5 6</body> 7</html>
■試したこと
①こちらのページを参考に、JavaScriptでファイルアップロードダイアログを開くスクリプトを書きました。
https://teratail.com/questions/62945
VBA
1 2Sub test() 3 4Dim objIE As InternetExplorer 5Set objIE = CreateObject("InternetExplorer.Application") 6objIE.Visible = True 7objIE.navigate "http://13.115.36.119/html.html" 8 9' ページが開くまで待機 10Call IEWait(objIE) 11 12' クリップボードにコピー 13Dim CB As New DataObject 14Dim buf As String 15 16buf = "https://pbs.twimg.com/profile_images/581025665727655936/9CnwZZ6j.jpg" 17 18With CB 19 .SetText buf ''変数のデータをDataObjectに格納する 20 .PutInClipboard ''DataObjectのデータをクリップボードに格納する 21 .GetFromClipboard ''クリップボードからDataObjectにデータを取得する 22End With 23 24' JavaScriptでファイルアップロードダイアログを開く 25objIE.document.parentWindow.execScript "window.setTimeout(""document.getElementsByTagName('input')(0).click();"",10);" 26Sleep (1000) 27SendKeys "^v", True 28 29End Sub 30 31'IEを待機する関数 32Function IEWait(ByRef objIE As InternetExplorer) 33 34 Do While objIE.Busy = True Or objIE.readyState < READYSTATE_COMPLETE 35 DoEvents 36 Loop 37 38End Function 39
結果:ダイアログが開かず、そのままVBAスクリプトが進行します。
どのように修正すればよろしいでしょうか?
【環境】
Windows7 64bit
Excel2010 ver14.0.7190.5000(64bit)
InternetExplorer 11
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/12/05 16:32
2017/12/08 16:51