アプリ版:「スタンプのみでお礼する」機能のリリースについて

(1)作業環境
Windows 7 Professional SP1
Intel(R) Core(TM) i3­3240 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.vba­ie.net/
おしえてgoo
http://oshiete.goo.ne.jp/qa/4624451.html
その他いろいろ数週間ほどしらべていますがわかりません。

以上、ご存じのかたご教示お願いしいたします。

A 回答 (1件)

IE 8 になった時の仕様変更に対応した方法だけど、今も使えるのかな。

。。
http://language-and-engineering.hatenablog.jp/en …

参照ボタンにフォーカスを当てて、クリックではなくスペースキーでボタンを押すと、ファイル参照ダイアログ表示で制御が止まってしまうことなくファイルのパスを入力することができるって奴です。
試していないのでもしかしたら IE 11 では対策されてしまっているかもしれない。

ファイル参照フィールドに ID が振られていないとの事ですが、TAB キーによってフォーカスを進めることができると思います。
ファイル参照フィールドよりも前にある要素で getElementById によってフォーカスを当てられる要素があれば、そこから必要な回数だけ TAB キーを SendKeys で送ってあげるしかないかなぁと。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。

試行錯誤していると、下記で目的達成できました!

  objIE.document.Script.setTimeout _
    "javascript:document.getElementById('sample1').click()", 200
  Sleep 1000
  SendKeys ("^v")
  SendKeys ("{ENTER}")

はじめに.focus()・・・の処理を試みたのですが、なにもおこらず、認識できているかわかりませんでした。

SendkeysはWS.SendKeysの必要があると思っていましたが、通常のVBAのSendKeysでできました。

この場合は英数字しか有効でないということをどこかで見たことがあり、実際日本語入力を試してもされあせんでした。
そのため事前にクリップボードに格納する処理をしてから貼り付ける処理としました。
これによって目的が達成できました。

マクロが通った瞬間、約1か月のもやもやから解き放たれて、きもちよかったです。
大変ありがとうございました。

お礼日時:2016/01/20 20:59

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!