「input type=file」で表示されるダイアログの制御方法

最近の書き込み件数: 今日 0件、昨日 0件
未読分:4件

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降(0) 2日前以降(0) 3日前以降(0) 4日前以降(0) 5日前以降(0)


Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応

近田 伸矢, 植木 悠二, 上田 寛

IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。

Message#4 2015年4月13日(月)09時09分
From: DSC_渡辺
返事 変更
どうも、しばらく放置していました。すいません。
ファイルダイアログの自動操作ですが、EXCELVBAからVbscriptを起動することでファィルパスの入力と開くボタンクリックを実現することができました。

''ファイルダイアログ表示待ちの為に待機
WScript.sleep(5000)
Set ObjExcel = WScript.CreateObject("Excel.Application")
''ファイルダイアログのハンドラ取得
DialogHnd = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowA"", ""JCC"", ""#32770"", """ & ファイルダイアログのタイトル & """)" )
''ファイルダイアログの各入力項目のハンドラ取得
EditHnd1 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & DialogHnd & "," & 0 & ",""ComboBoxEx32""," & vbNullString & ")")
EditHnd2 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & EditHnd1 & "," & 0 & ",""ComboBox""," & vbNullString & ")")
EditHnd3 = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & EditHnd2 & "," & 0 & ",""Edit""," & vbNullString & ")")

''ファイルパスを入力項目にセット
ret = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""SendMessageA"", ""JJJJC"", " & EditHnd3 & "," & &HC & "," & 0 & ",""" & ファイルパス & """)")

''開くボタンのハンドラ取得
BtnHnd = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""FindWindowExA"", ""JJJCC"", " & DialogHnd & "," & 0 & ",""Button"",""開く(&O)"")")
''開くボタンのコントロールID取得
CtrID = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""GetDlgCtrlID"", ""JJ""," & BtnHnd & ")")

''開くボタンをクリック
ret = ObjExcel.ExecuteExcel4Macro("CALL(""user32"", ""SendMessageA"", ""JJJJC"", " & DialogHnd & "," & &H111 & "," & CtrID & ",""" & BtnHnd & """)")

ObjExcel.Quit
Set ObjExcel = nothing
WScript.Quit

以上の処理をファイルダイアログが表示されている間に実行することでファイルパス入力と開くボタンクリックに成功し、Web画面のテキストにもファイルパスが表示されました。

ただ、この後にsubmitボタンクリックでファイルアップロードを実行しても、「-2147352319 オートメーション エラーです。」となったり、ファイルアップロードが実行されないという現象が発生しました。
これに関しては別途質問を投げることとします。
どうもお世話をかけました。

Message#3 2015年3月19日(木)08時07分
From: DSC_渡辺
返事 変更
VBAマスターのメッセージ(#2)への返事

>
> 昔は選択まで操作できたけど、今はIEのセキュリティ強化のおかげで操作できなくなっていますね。
>
> どうしてもやるなら、IEのバージョンを下げて利用するっていう手も1つの手です。

返信ありがとうございます。
IEのバージョンを下げるということはできません。
何か方法がないか、もう少し調査してみます。

Message#2 2015年3月18日(水)08時44分
From: VBAマスター
返事 変更
DSC_渡辺のメッセージ(#1)への返事


> web画面で参照ボタン(「input type=file」のボタン)をクリックしてファイルダイアログを表示することはできたのですが、そこで処理が止まり、手操作でボタンをクリックしない限り動かない状況となりました。

昔は選択まで操作できたけど、今はIEのセキュリティ強化のおかげで操作できなくなっていますね。

どうしてもやるなら、IEのバージョンを下げて利用するっていう手も1つの手です。

どこまでのIEだったかは忘れましたがおそらくXPの時代だったのでIE8以下くらいだったと思いますよ。

Message#1 2015年3月17日(火)09時52分
From: DSC_渡辺
返事 変更
サーバーにファイルをアップロードするWeb画面をHTML制御し、自動実行するシステムをEXCELVBAで作成しています。

web画面で参照ボタン(「input type=file」のボタン)をクリックしてファイルダイアログを表示することはできたのですが、そこで処理が止まり、手操作でボタンをクリックしない限り動かない状況となりました。

他の質問掲示板などで調べて以下のように作ってみましたが、うまくいきません。IEバージョンは10.0です。

@ファイル名のテキストボックスにフォーカスを移し、sendkeysでファイル名を入力する。
 objIE.Document.Forms("****").Item("****").Select
 Application.SendKeys "C:\Documents and Settings\****.xxx", True
 objIE.Document.Forms("****").Item("****").Click 'アップロードボタン押下


Aファイルを開くダイアログを表示させて、SendKeysでフィールドにファイルパスをセットする
  objElement.Focus
WSオブジェクト.SendKeys ("{TAB}")
Sleep (1000)
WSオブジェクト.SendKeys (" ")
Sleep (1000)
WSオブジェクト.SendKeys (ファイルパス)
Sleep (1000)
WSオブジェクト.SendKeys ("{ENTER}")
Sleep (1000)
Set WSオブジェクト = Nothing


@は動作しませんでした。
Aはファイルダイアログの表示までで止まってしまいました。

何か他に方法をご存知の方はいらっしゃいましたら教えてください。

最新20件 最新50件 最新100件 最新200件 200件以前
昨日以降 2日前以降 3日前以降 4日前以降 5日前以降

VBAのIE制御についてのQ&A掲示板

↑エクセルVBAのIE(InternetExplorer)操作で分からない事があればこちらの掲示板よりご質問ください^^

ExcelのVBA初心者入門

↑こちらはExcelのVBAをマスターできるよう初心者向けのエクセルVBA入門コンテンツになります^^

VBAのIE制御入門RSS

RSSフィードを登録すると最新記事を受け取ることができます。

VBAIE操作のスカイプレッスン

VBAでIE(InternetExplorer)制御の準備

エクセルVBAでIE制御の応用編

こちらでは、エクセルVBAで実際に作成したIE(InternetExplorer)制御ツールをまとめています。自動ログインや情報収集など具体的に解説しています。IE(InternetExplorer)制御をされる方は参考にしてください。

【ダウンロード】IE操作に便利なツール

こちらでは、これまでに紹介したIE(InternetExplorer)操作で便利な機能をツール化しています。無償でダウンロードできますので、目的に合わせたご利用ください。

スポンサー リンク

IEオブジェクトのメソッド・プロパティ

こちらでは、IE(InternetExplorer)オブジェクトのメソッド・プロパティをまとめています。

IE操作に利用されているVBA関数

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたVBA関数をまとめています。

スポンサー リンク

IE操作に利用されているステートメント

こちらでは、エクセルVBAのIE(InternetExplorer)操作で利用されたステートメントをまとめています。ExcelのVBAで基本的な部分になりますので、しっかり理解しましょう。

IE(InternetExplorer)制御のVBAコード

こちらでは、これまでに作成したIE(InternetExplorer)操作で役立つサブルーチンをまとめています。
全てをコピーする必要はありませんが、目的に合わせたサブルーチンをご利用ください。

ExcelのVBAで作成した役立つVBAコード

こちらでは、IE(InternetExplorer)制御の利用だけでなく、Excel全般で利用できるVBAコードです。エクセルVBAで役に立つものばかりですので、ご利用ください。

dmb.cgi Ver. 1.068
Copyright(C) 1997-2014, hidekik.com