
(1)作業環境
Windows 7 Professional SP1
Intel(R) Core(TM) i33240 CPU @ 3.40GHz 4.00GB
32ビットオペレーティングシステム
Microsoft Office Standard 2010
Excel ver 14 Internet Explorer11
(2)やりたいこと
あるWebページで手動操作の場合、次をクリックすると「アップロードするファイルの選択」という画面がでて、ファイルの選択をできるようになる。
<input id="sample1" name="sample[1]" type="file" value="" size="90"/>
これをVBAで操作して、ファイルのアップロードを行いたい。
(3)状況
Clickメソッドでクリックすることはできるが、そこでVBAが停止することは分かっている。
例)objIE.document.getElementById("sample1").click
Valueに直接値を入れてもファイルはアップロードされないことは分かっている。
例)objIE.document.getElementById("sample1").value="C:\temp\Test.txt"
Java Scriptを組み込んでクリックするとマクロは停止しないという認識。
例)objIE.document.Script.setTimeout "javascript:document.getElementsByClassName('sample2')("0").click()", 200
※当方Javaの知識は全然なく、ネットでみただけだが別の個所では動作させられている。
上記(2)の<input>タグの中にはClassがないため、次を試してみたが認識しない(エラーもなに もおこらず通過)。
例)objIE.document.Script.setTimeout "javascript:document.getElementByID('sample1').click()", 200
例)objIE.document.Script.setTimeout "javascript:document.getElementsByName('sample[1]')(0).click()", 200
(4)質問事項
①アップロードをするにはどういうマクロになるのか
②objIE.document.Script.setTimeoutでClassはクリックできるが、IDなどではクリックできないの か
(5)参照したページ
VBAのIE制御入門
http://www.vbaie.net/
おしえてgoo
http://oshiete.goo.ne.jp/qa/4624451.html
その他いろいろ数週間ほどしらべていますがわかりません。
以上、ご存じのかたご教示お願いしいたします。
No.1ベストアンサー
- 回答日時:
IE 8 になった時の仕様変更に対応した方法だけど、今も使えるのかな。
。。http://language-and-engineering.hatenablog.jp/en …
参照ボタンにフォーカスを当てて、クリックではなくスペースキーでボタンを押すと、ファイル参照ダイアログ表示で制御が止まってしまうことなくファイルのパスを入力することができるって奴です。
試していないのでもしかしたら IE 11 では対策されてしまっているかもしれない。
ファイル参照フィールドに ID が振られていないとの事ですが、TAB キーによってフォーカスを進めることができると思います。
ファイル参照フィールドよりも前にある要素で getElementById によってフォーカスを当てられる要素があれば、そこから必要な回数だけ TAB キーを SendKeys で送ってあげるしかないかなぁと。
ご回答ありがとうございます。
試行錯誤していると、下記で目的達成できました!
objIE.document.Script.setTimeout _
"javascript:document.getElementById('sample1').click()", 200
Sleep 1000
SendKeys ("^v")
SendKeys ("{ENTER}")
はじめに.focus()・・・の処理を試みたのですが、なにもおこらず、認識できているかわかりませんでした。
SendkeysはWS.SendKeysの必要があると思っていましたが、通常のVBAのSendKeysでできました。
この場合は英数字しか有効でないということをどこかで見たことがあり、実際日本語入力を試してもされあせんでした。
そのため事前にクリップボードに格納する処理をしてから貼り付ける処理としました。
これによって目的が達成できました。
マクロが通った瞬間、約1か月のもやもやから解き放たれて、きもちよかったです。
大変ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ビデオファイルのプロパティの...
-
エアコンの冷媒 R410Aの重...
-
PC内で速度を遅くした音源をCD...
-
個別に違う添付ファイルを付け...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
Accessのソースが見れない
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
GIMP separate+プラグイン クラ...
-
タブレットのキーボードをオフ...
-
リストビューで選択行の背景を...
-
自作扉の材料は何がいい?集成...
-
eclipseでタブ入力ができなくな...
-
TextBoxにフォーカスを与えると...
-
[IE5.5]INPUT TYPE=FILEのREADO...
-
CDをマイクロSDに取り込み携...
-
flash (.swf) を編集したい
-
アフターエフェクトでエフェク...
-
VHDLを書くときのエディタにつ...
-
ファミコンソフトの裏に書いた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
PC内で速度を遅くした音源をCD...
-
複数のブックを新しいブックのS...
-
A4の紙に印刷されている文字を...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
拡張子「.IDJ」を、windo...
-
eclipseでタブ入力ができなくな...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
GIMP separate+プラグイン クラ...
-
TextBoxにフォーカスを与えると...
-
ファイル数と合計サイズの取得方法
-
リストビューの選択状態を取得...
-
クラリスインパクトに替わるソ...
-
ビデオファイルのプロパティの...
-
エアコンの冷媒 R410Aの重...
-
VBA:カウンターの i の値が開放...
-
garagebandのLR Mixの方法について
-
Fortniteのクラッシュについて
おすすめ情報