(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で質問しましょう!
似たような質問が見つかりました
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
- JavaScript javascriptで変数を組み込みたい 2 2023/01/13 09:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
e-taxで送信ファイルの拡張子が...
-
2枚、マイクロSDカードを入...
-
A4の紙に印刷されている文字を...
-
ビデオファイルのプロパティの...
-
ガラケーからPCへの写真の取り込み
-
ファイル数と合計サイズの取得方法
-
個別に違う添付ファイルを付け...
-
スマホでtxtファイルを編集する...
-
RaspberryPi にUSBメモリを接続...
-
TextBoxにフォーカスを与えると...
-
PC内で速度を遅くした音源をCD...
-
エクセルで「特定の文字を含む...
-
Thunderbired Eメール不具合
-
SDカードの中に入ってる小さい...
-
OpenOffice
-
CD/DVDメディア挿入の検知
-
カメラ付き携帯、フラッシュは...
-
SH901isのメモリ(容量)
-
リストビューの選択状態を取得...
-
フラッシュムービーを保存したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
個別に違う添付ファイルを付け...
-
e-taxで送信ファイルの拡張子が...
-
エクセルで「特定の文字を含む...
-
スマホでtxtファイルを編集する...
-
複数のブックを新しいブックのS...
-
A4の紙に印刷されている文字を...
-
iPhoneの内蔵の記憶媒体は、HDD...
-
ビデオファイルのプロパティの...
-
エアコンの冷媒 R410Aの重...
-
ガラケーからPCへの写真の取り込み
-
拡張子「.IDJ」を、windo...
-
Fortniteのクラッシュについて
-
2枚、マイクロSDカードを入...
-
VBA:カウンターの i の値が開放...
-
ファイル数と合計サイズの取得方法
-
stdio.hの中身
-
TextBoxにフォーカスを与えると...
-
PC内で速度を遅くした音源をCD...
-
リストビューの選択状態を取得...
-
GIMP separate+プラグイン クラ...
おすすめ情報