これ何て呼びますか Part2

下記のコードによりファイルパスを入力したいのですが、思ったとおりに動いてくれません(環境はwindowsXP、IE6)

set IE=WScript.CreateObject("InternetExplorer.Application")
IE.Navigate("http://~")
IE.Visible=true
IE.document.form(0).file.value="c:\etc.csv"

値を入力しようとしているテキストボックスは、
ファイルパスを入力するテキストボックスで、「ファイルを
選択する」ダイアログボックスを起動するボタンが付属していますが、
パスを直接入力することも可能です。

「IE.document.form(0).file.focus」では問題ないのですが、
「IE.document.form(0).file.value="c:\etc.csv"」ではテキストボックスに値が入力されません。つたない説明で恐縮ですが、解決への
ヒントをご教示頂ければ幸いです。よろしくお願いいたします。

A 回答 (2件)

こんにちは。



> ファイルパスを入力するテキストボックスで、「ファイルを
> 選択する」ダイアログボックスを起動するボタンが付属...

INPUT TYPE=FILE のことですね。#1 の方がご回答されてますが、
セキュリティー的な理由で、通常まともなブラウザであれば、
不可能です。

 # そのようになっていないと、ローカルのファイルを勝手に
 # 送信するスクリプトを組めてしまいますから。

SendKeys で逃げるしかないですかね....

ie.document.form(0).file.focus
CreateObject("Wscript.Shell").SendKeys "c:\test.csv"

などでいけると思います。もちろん IE がアクティブでないと
ダメですよ。

ただ、WSH の SendKeys は日本語がバケます。もし、日本語の
ファイル名がある場合は、クリップボードを経由するしかない
かもしれません。こんな感じ。

' // IE の各種定数
Const OLECMDEXECOPT_DODEFAULT = 0
Const OLECMDID_PASTE = 13
' // クリップボードにファイル名をセットする
ie.document.parentWindow.clipboardData.setData "text","C:\テスト.csv"
' // 目的のテキストボックスをフォーカスしてペースト
ie.document.form(0).file.focus
ie.ExecWB OLECMDID_PASTE, OLECMDEXECOPT_DODEFAULT

全ての PC で必ずしも上手くいくとは限りませんが。。

私の環境では、一見して動作してます。
    • good
    • 0
この回答へのお礼

お礼が遅くなって申し訳ありません。
クリップボード経由でファイル名を送り込むやり方で何とか
できました!ありがとうございましたm( )m

お礼日時:2009/02/26 21:22

出来ません


セキュリティ上の理由からできないようになっています

ご質問のことが出来てしまうと『悪意のある第三者』がサーバーがパンクするほどの大量データを流し込めてしまうからです

フォームの送信の仕組みを直接操作するように制御してやれば可能ですが VBScriptのみでは限界があるでしょう
    • good
    • 0
この回答へのお礼

遅くなりましたが、ご回答ありがとうございました。
なるほど、制限がかかっていたんですね。

お礼日時:2009/01/31 17:02

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


おすすめ情報