vbsでフォームに値を入力できない

このQ&Aのポイント
  • vbsでフォームに値を入力する方法がうまくいかないです。
  • ファイルパスを入力するテキストボックスに値を入力できません。
  • IE.document.form(0).file.valueによるテキストボックスへの値の入力が機能しません。
回答を見る
  • ベストアンサー

vbsでフォームに値を入力できない

下記のコードによりファイルパスを入力したいのですが、思ったとおりに動いてくれません(環境は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"」ではテキストボックスに値が入力されません。つたない説明で恐縮ですが、解決への ヒントをご教示頂ければ幸いです。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.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 で必ずしも上手くいくとは限りませんが。。 私の環境では、一見して動作してます。

daichn1
質問者

お礼

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

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

出来ません セキュリティ上の理由からできないようになっています ご質問のことが出来てしまうと『悪意のある第三者』がサーバーがパンクするほどの大量データを流し込めてしまうからです フォームの送信の仕組みを直接操作するように制御してやれば可能ですが VBScriptのみでは限界があるでしょう

daichn1
質問者

お礼

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

関連するQ&A

  • vbsでフォーム入力ができません

    set oIE=Wscript.CreateObject("InternetExplorer.application") oIE.navigate2("http://xxxyyy/index.html") oIE.visible=true Do Until oIE.Busy = False WScript.sleep(250) Loop oIE.document.sf1.name.value="山田太郎" oIE.document.sf1.email.value="abc@xxx.co.jp" oIE.document.sf1.subject.value="人材募集" oIE.document.sf1.submit() 7行目のoIE.document.sf1.name.value="山田太郎"でエラーになってしまいます。”オブジェクトでサポートされていないプロパティまたはメソッドです”とエラーメッセージがでます。vbsは殆どわかりませんのでわかる方いましたらお願いします。

  • フォーム内のテキストボックスの値を参照するには?

    モジュールからフォーム上のテキストボックスに入力された値を参照する方法で質問です。 内容としては、テキストボックスに入力された日付(yyyymmdd)をファイル名にもつCSVファイルをインポートするといったものです。 フォーム名:Form1 テキストボックス名:TBox1 インポート元:C:\yyyymmdd.csv インポート先:インポートテーブル モジュール記述先:標準モジュール Function Import() On Error GoTo Import_Err Dim FilePath As String FilePath = "C:\" & Format(Form1. TBox1. Value, "yyyymmdd") & ".csv" DoCmd.TransferText acImportDelim, "インポート定義", "インポートテーブル", FilePath Import_Exit: Exit Function Import_Err: Resume Import_Exit End Function 以上の様なモジュールを組んでみましたがインポート出来ませんでした。 エラーは出ませんでしたが何も起こらないといった状態です。 モジュールの部分についてはなんとなくわかるのですが、フォーム側の設定?がよくわかりません。 あと何をどのようにすればテキストボックス内の値を参照可能になりますでしょうか? 何卒よろしくお願いいたします。

  • VBSでフォームに値を繰り返し入れる方法で悩んでいます

    VBScriptでフォームに値を入れることを繰り返したいのですがどうもうまくいかずに悩んでいます。いい方法を教えて下さい。 指定ページを開いた後に If objIE.Document.URL = strURL Then Set objIN = objIE.Document.getElementByTagName("INPUT") objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop If objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop ElseIf objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop ElseIf objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop ElseIf objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop Else objIE.Document.URL <> strAfterLoginPage Then objIN(0).value = ID objIN(1).value = PASSWORD objIN(2).Click Do Until objIE.Busy = False WScript.sleep(250) Loop End If 以下省略 といったように1回でログインできなかった場合何度か入力するプログラムなのですが最初のElseIfの後のところで「オブジェクトがありません」となってしまいます。 ページも遷移してないのですが何故かオブジェクトがなくなってしまいます。 そういった対策をすればよいのでしょうか? お願いします。

  • テキストフォームの未入力チェック

    お世話になります。 Javascriptでテキストフォームの入力チェックを行っております。 テキストフォームにはDBから取得した値が入っており、その値を変更して更新できるプログラムを作ろうとしています。 テキストフォームが未入力だった場合に元の値を入れてPOSTリクエストを投げたいのですが方法が分かりません。 (よく見かける未入力だったらアラートを出すというのは出来るのですが・・・) 以下ソースの抜粋になります。 function check(){ for(i=0; i<document.iform1.length;i++){ if(document.form1.elements[i].value==""){ document.iform1.elements[i].valueに元の値を入れたい。 } } <form name="form1" action="updata.php" method="POST"> <input type="button" name ="save" value="更新" onClick="check()"> </form> 以上、ご教示よろしくお願いいたします。

  • htmlのfileタグに自動で値を入れる方法

    htmlのタグでいって <input type="file">を用いてファイルをサーバーにアップロードしたいと思っています。で、このとき、ファイル名は任意に選べるのではなく固定で送信したいと思っています。 すなわち、HTMLを読み込んだ時点で、fileのテキストボックスにファイルパスが埋め込まれているか、JavaScriptで、ファイルパスを自動入力するようにしたいと思っています。 最終的には、form内のオブジェクトをすべて非表示にし、onload時にsubmitするような形にしたいと思っています。いろいろ事情があって苦肉の策になっています…。 とりあえず(だめだとは思っていたのですが) <input type="file" value="ファイルパス" name="filepath"> と直書きにしてみたり document.all.filepath.value = "ファイルパス"; などとしてみたりしましたがだめでした…。 W3C勧告の使用上はvalueでファイルパスを指定できるようになっているようなのですが、現在の一般的なブラウザでは禁止されているようですね。 このような場合、何らかの方法でfileにファイルパスを自動入力することはできますでしょうか? もしできない場合、何らかの方法で実現する方法はありますでしょうか?よろしくお願いします。 ちなみに実現できればいい環境は WinXP環境のIE6です。言語はクライアント言語はJavaScriptのみで、という条件付です。 できないかもしれないのですが、こういうのって必要になるときもあるよなーなどと思っており、もしかしたら解決方法があるかもしれないと思い質問しました。よろしくお願いします。

  • テキストボックスを無効にすると値が取得できない

    javascriptでこのようにテキストボックスを無効に してフォームを送信するとphp側でvalueの値が取得できないのですが、入力無効にすると valueは送られないんでしょうか? <form> <input type="text" id="sample" name="sample" value="値" /> </form> スクリプト .document.getElementById('sample').disabled = true; valueにはphpで値をセットし、それをテキストボックスで編集できないようにして 値を飛ばそうとしたのですがテキストボックスのvalueの値が来てないようです。 自分なりに考えたんですが、送信する瞬間だけ(submitボタンが押された時) テキストボックスを有効に戻すようにコードを書いているのですが これ以外で何かありますか? ---このように対処--- <form onsubmit="return disb()"> <input type="text" name="sample" value="値" /> </form> スクリプト document.getElementById('sample').disabled = true; function disb(f){ f.sample.disabled = false; }

  • フォームに入力された値を計算する方法

    私はまったくの初心者なのですがどなたか教えて下さい。 ●A,B,Cという3つの入力フォームがあるとします。 Aのフォームに入力された数字は「A÷20」という値に、 Bのフォームに入力された数字はそのまま、 Cのフォームに入力された数字は「C×10」という値に変更して、 (A+C)÷B×30という計算を行なって、その答えを Dのフォームへ表示するというシステムをcgiやphpで作りたいのです。 あれこれと試行錯誤しながら、javascriptでなんとか出来たんですが… どなたか教えて頂けませんか? function keiri() { a = document.takeko.case.value; a = eval(a); a = a / 20 b = document.takeko.time.value; b = eval(b); c = document.takeko.days.value; c = eval(c); c = c * 10 ans = (a + c) / c * 30; document.spec.result.value = ans; } <form name="takeko"> <input name="case" type="text" size="12"> <input name="time" type="text" size="12"> <input name="days" type="text" size="12"> <input name="button" type="button" onClick="keiri()" value="CLICK"> <input name="result" type="text" size="12"> <br></form>

    • 締切済み
    • PHP
  • フォームのテキストボックスが空白なら"*"を入力する

    「フォームのテキストボックスが空白なら"*"を入力する」 としたいのですが If Form.承認者テキスト.Value = "" Then Form.承認者テキト.Value = "*" だと承認者テキストでも"*"が入力されません。 Form.承認者テキスト.Value = Null としてもできません。どうすればいいのでしょうか? よろしくお願いします。

  • Javaのフォームの入力欄に文字を貼り付けたい

    VB.NETとWindowsXP、IEなのですが、 <input type="file" size=30 name=FILE value="*.txt"> のような設定がされたテキストボックス内に IE.document.Forms(0).Elements("FILE").value = "c:\a.txt" として文字を貼り付けるにはどうしたらよいでしょうか? 別の欄のinput type="text"になっているもので試してみたら 正常に貼り付けられたのですが、fileとなっている場合は この方法では出来ませんでした。 ブラウザ上では手動で普通に入力して使用できるようになっています。 何か良い方法を教えて頂けると助かります。 よろしくお願いいたします。

  • vbscriptでIE自動入力(コンボボックス選択について)

    すみません。vbsでIEのフォームに自動入力したいのです。 で、できないところがありまして質問します。 上から コンボボックスA(あ、い、う)を選べる テキストボックスB チェックボックスC というサイトです。 どうもBとCにinputタグにdisabledと書いてあり入力規制?されてます ソースBは <input type=text size="20" name="B" disabled> となってます。Cも同様です。 Aのコンボボックスを選択すると入力できるようになります。 vbsはこうしてみました。 IE.document.form.A.value="あ" 又は IE.document.form.A.selectedIndex=0 IE.document.form.B.value="か" IE.document.form.C.checked=true しかしこれではAに”あ”は入りますが、 B,Cの規制が解除されません。 (一応文字が白抜き表示で入っているように見えるでもデータとしては入力されてない)。 手動で選択すると解除されます。 Aのソースが<select style="width:10" name="A" onChange="F()"> となっているのでこのonchangeが怪しいと思っているのですが どうでしょうか。 どのようにしたらいいんでしょうか。 <script language="JavaScript" src="xxx.js"> とソースにあるのでJavaも関係あるのでしょうか。あまり良く分かってません。 ツールを使いメモリ上のソースを確認すると Aを手動で選ぶとB,Cのdisabledが消えました。 お助けください。