HTMLの<input type=file>の「value」には値を送れないので,
「Click」で開かれるファイルダイアログに値を送りたいのですが。
できればその後,「開く」ボタンにも「Click」を送りたいと思います。
sendkeysではどうも上手くいかなくて,このファイルダイアログを
操作する方法を教えてください。
"c:\test\test.jpg"を送りたい場合
<input type=file>が複数あるとうまくいかないかも(^^;
Dim objElement As Object
For Each objElement In WebBrowser1.Document.getElementsByTagName("INPUT")
If objElement.Type = "file" Then
objElement.Focus
SendKeys "{TAB} c:\test\GC0112C.jpg{ENTER}"
End If
Next objElement
あ、間違えた
SendKeys "{TAB} c:\test\test.jpg{ENTER}"
ですね。
LESIA様、早速のご返答ありがとうございます。
現在、下記のコードでファイルダイアログを開いた状態です。
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Navigate "URL"
objIE.document.all.ボタン.Click
このコード後に、LESIA様のご返答にある「WebBrowser1.Document…」の箇所を「objIE.Document…」として実行してみました。
結果ファイルダイアログには値は送られず、ダイアログ終了後に、開かれているWebページに「sendkeys」が送られるという結果となりました。
私の現在のコードがおかしい可能性が高いのですが。
申し訳ありません。稚拙な私のコードの場合でのご助言をお願いいたします。
ページが表示される前に処理してしまってるからでしょう。
Dim objIE As Object
Set objIE = CreateObject("InternetExplorer.application")
objIE.Navigate "URL"
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.Document.ReadyState <> "complete"
DoEvents
Loop
objIE.document.all.ボタン.Click
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.Document.ReadyState <> "complete"
DoEvents
Loop
「objIE.document.all.ボタン.Click」を実行しないで、LESIA様のコードを実行してみましたが、やはり<type=input>なので、値を入力(sendkeys)することはできませんでした。
クリップボードに入れた値を貼り付けようとも考えたのですが、貼り付けのキーも受け付けないようです…。
何度もご返答ありがとうございます。
すいません文章を送信後にLESIA様のご返答に気づきまして。
Do While objIE.Busy = True
DoEvents
Loop
Do While objIE.Document.ReadyState <> "complete"
DoEvents
Loop
のコードは私も実行しておりまして。
待ち時間を強引にもうけても、<input type=file>ボタンをクリック後に開かれるファイルダイアログには、「sendkeys」できません…。
このファイルダイアログが開いたとき、フォーカスはファイル名入力の場所にちゃんと移っております。
SendKeysするデータは、{TAB}とファイル名の間にはスペースが必要なんですが
入れてますでしょうか?(^^;
問題なければ、そのページのURLを教えていただければ、こちらでもテストが
出来るんですが・・・
マルチポストはマナー違反だと思います。
マルチポストだったのか・・・でも、ひとつだけ。
SendKeysするデータの最後の{ENTER}はファイルダイアログの[開く]ボタンを
クリックするもので、ファイルダイアログは一瞬で閉じてしまい、SendKeys
出来たかどうか確認することは不可能だと思いますが(^^;
<input type=file>のテキストボックスの部分にファイル名が入ってたら
うまくいったことになります。
すいません初めてQ&A掲示板を利用したもので,マナーを知らずに申し訳あり
ませんでした。
LESIA様,何度も丁寧なご返答をどうもありがとうございます。
実験しているページは,
<input type=file>
を記述しただけのhtmlファイルです。
やはりファイルダイアログが開いたままでした。
LESIA様,何度も本当にありがとうございました。
マナー違反だったもので,ここで解決とさせていただきます。
ひとつずつSendKeysして、どこまでうまくいくか確認してみるとか。
(1)SendKeys "{TAB}" '参照ボタンにフォーカスが移る
(2)SendKeys "{TAB} " 'ファイルダイアログが表示される。
(3)SendKeys "{TAB} c:\test\test.jpg" 'ファイル名が入力される
(4)SendKeys "{TAB} c:\test\test.jpg{ENTER}" '[開く]ボタンがClickされる
って、もう解決したんですね(T_T)
>って、もう解決したんですね(T_T)
こちらが情報元です。
http://www2.moug.net/app/bbs/message.php?cat=exvba&id=20050310-000026
ツイート | ![]() |