人に聞けない痔の悩み、これでスッキリ >>

VBSでブラウザ上のテキストボックスに文字列を打ち込み、ボタンを押す方法を教えてください。
現在、下のような方法で行っているのですが応用が利かないので改善したいと思っています。

Set IE = CreateObject("InternetExplorer.Application")
Set WshShell = CreateObject("WScript.Shell")

IE.Visible = True
IE.Navigate("https://サイトのURL")

Do Until IE.Busy = False
WScript.Sleep 1000
WshShell.SendKeys "y"
Loop
'(セキュリティの警告が出るため)
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys "loginid"
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WScript.Sleep 100
WshShell.SendKeys "password"
WScript.Sleep 100
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"

操作したいページのソースの一部を抜粋すると下記のようになっています。

テキストボックス
<INPUT type="text" name="loginId" class="Necessary" size="20" maxlength="5" value="" tabindex="20">

ボタン
<INPUT class="button10" type="button" name="sentaku" value="認証" onClick="javascript:execute・・・・略

うまく操作できる方法を教えてください。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

set f=oIE.document.forms(0)


f.loginId.value="loginid"
f.password.value="password"
WshShell.SendKeys "{ENTER}"

テキスト領域でエンターするとsubmitになるので
エンターをsendkeysするのはありだとおもいますよ
    • good
    • 0
この回答へのお礼

ありがとうございます。
文字の入力はうまくできました。
ただ、テキスト領域でのエンターは作動しないのでTABキーでボタンの上にフォーカスを合わせてENTERしなくてはいけません。
ボタンを押すプログラムはないのでしょうか?

お礼日時:2006/09/01 13:22

#1>ボタンを押すプログラムはないのでしょうか?


同じようにして
f.sentaku.click
でいけると思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
完璧に機能しました!

お礼日時:2006/09/04 09:27

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QVBScriptから指定URLを開く方法

 ある特定のWebページをVBScriptから開きたいのですが方法が探せませんでした。VBScriptからWebページを開く方法、もしくはhttp putを行う方法を教えてください。よろしくお願いします。

Aベストアンサー

こんなので、どうでしょうか?

Set objIE = Wscript.CreateObject("InternetExplorer.Application")
objIE.Navigate2 "http://www.goo.ne.jp/"
objIE.Visible = TRUE
Set objIE =Nothing

QVBS(WSH)で開いたIEのウィンドウがアクティブにならない

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーのみのIEを起動する
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objIE = WScript.CreateObject("InternetExplorer.Application")
objIE.Navigate("http://www.google.co.jp/")
objIE.MenuBar = False
objIE.StatusBar = False
objIE.ToolBar = False
objIE.AddressBar = False
objIE.Visible = True

'表示待ちループ
Do While objIE.Busy
WScript.Sleep 100
Loop

'[test]で検索
WshShell.SendKeys("test")
WScript.Sleep(100)
WshShell.SendKeys("{TAB}")
WScript.Sleep(100)
WshShell.SendKeys("{ENTER}")

--------------------------------------------------

VBSでタイトルバーのみのIEウィンドウを開き、
SendKeyでtestと入力するスクリプトを作成しています。

ですが、開いたIEのウィンドウがアクティブにならず、
SendKeyがIEに送信されません。

VBSについては全くの初心者でして、ウィンドウがアクティブにならないのが
環境の問題なのか、プログラムの問題なのか判断できません。
どなたかご教授をお願いします。

IEのバージョンは8、OSはWinXPです。

以下、ソースです。

--------------------------------------------------

'タイトルバーの...続きを読む

Aベストアンサー

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動した場合、objIEだけでプロセスIDが得られないので、別の検討が必要になります。
メニュー等非表示の指定を除けば、iexplorer.exeをExecコマンドで立ち上げることは可能でしょう。

プロセスIDまで取得してきっちり組みたい場合は、WSHにてWMIという仕組みを使えばプロセス情報は得られます。

http://www.upken.jp/kb/wmi_sample.html

検索ワードとしては、「WMI」「VBScript」「プロセス」「取得」あたりでいろいろ出ると思いますよ。

IE起動前にプロセス一覧を記録し、起動後に増えたIEのプロセスをうまく引ければ実現できそうですね。

プログラムでは無く、環境によるものです。

ただ、WSHを使ってアクティブウィンドウにキーを送る仕組みですが、WSHからIEを起動したら確実にアクティブになる補償は無いので、スクリプト内で明示的にアクティブにした方が安全です。

@ITで指定したプロセスIDをアクティブにしてキーを送る記事があったので、参考になると思います。

http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh14/cformwsh14_01.html

ただし、
Set objIE = WScript.CreateObject("InternetExplorer.Application")

で起動し...続きを読む

QvbscriptでIE自動入力(途中で出てくるポップアップをクリックしたい)

IEで自動化入力をvbscriptで作っております。
次々に問題というか知識の無さでつまづいています。お知恵を貸してください。

IE自動入力をしていくと、途中のクリックで次画面に
進むところでポップアップが浮き上がりスクリプトが止まってしまいます。

ポップアップの内容は、
タイトルが「セキュリティの警告」
内容が「このサイトと取り交わす情報は、ほかの人から読み取られたり変更されることは
ありません。しかし、このサイトのセキュリティ証明書には問題があります。、、、」
と出まして、
「はい(Y)」「いいえ(N)」「証明書の表示(V)」と選択肢があります。
手動で「はい」をクリックするか、Yキーを押すとまたスクリプトが進み始めます。

これを自動でクリックするためにはどうしたらいいんでしょうか。
いろいろ調べてこうして見ました。

Set wshshell=wscirpt.createobject("wscript.shell")
wshshell.AppActivate("セキュリティの警告")
wshshell.sendkeys "y"

これでは、全く動きません。おそらくこのウィンドウにコントロールが行ってないと思います。
他の手立てを教えてください。よろしくお願いします。

IEで自動化入力をvbscriptで作っております。
次々に問題というか知識の無さでつまづいています。お知恵を貸してください。

IE自動入力をしていくと、途中のクリックで次画面に
進むところでポップアップが浮き上がりスクリプトが止まってしまいます。

ポップアップの内容は、
タイトルが「セキュリティの警告」
内容が「このサイトと取り交わす情報は、ほかの人から読み取られたり変更されることは
ありません。しかし、このサイトのセキュリティ証明書には問題があります。、、、」
と出まして、
...続きを読む

Aベストアンサー

ポップアップが表示されるより早く、yが送られてしまってるんでしょう。
ポップアップが表示されるのを待たないとね。

Set wshshell=wscirpt.createobject("wscript.shell")

'セキュリティの警告が表示されるまで待つ
Do Until wshshell.AppActivate("セキュリティの警告")
WScript.Sleep 100
Loop

'セキュリティの警告が消えるまでyを送る
Do While wshshell.AppActivate("セキュリティの警告")
wshshell.sendkeys "y"
WScript.Sleep 100
Loop

永久ループに陥らないように、適度にループ抜けを入れておけばいいでしょう。

Q起動済みのIEをハンドルから操作するには

既に起動済みのIEブラウザをWSH(VBS)などから、ハンドルを取得して
HTMLソース内のフォームに値をセット(Document forms elementなどで)
する事はできますでしょうか?
出来るとすれば、IEを捕まえて操作するには、どのようにすれば良い
でしょうか?

■補足
起動したIEは、自身のスクリプトからオブジェクトを生成したもの
では無く、ウインドウタイトルくらいしか解りません。

Aベストアンサー

とりあえず
Set ie = GetObject("", "InternetExplorer.Application")
Set ie = GetObject(, "InternetExplorer.Application")
のどちらかで取得できると思います。
Set ie = CreateObject("Shell.Application").Windows(0)
で取得する方法もあるらしいのですが、普通のフォルダもieとして認識してしまうため、純粋にieだけを取得する場合はチェックが必要だと思います。
取得したieでyahooで"おいしいラーメン"の検索結果の件数を表示します。
Sub sample()
Const READYSTATE_COMPLETE = 4
Dim ie As Object
Dim obj As Object
For Each obj In CreateObject("Shell.Application").Windows
If TypeName(obj.Document) = "HTMLDocument" Then
Set ie = obj
Exit For
End If
Next
If ie Is Nothing Then
MsgBox "ありません"
Exit Sub
End If
MsgBox "取得したieの情報" & vbCrLf & ie.LocationName & vbCrLf & ie.LocationURL & vbCrLf & TypeName(ie.Document)
ie.Navigate "www.yahoo.co.jp" 'yahooへ
Do While (ie.ReadyState <> READYSTATE_COMPLETE) Or ie.Busy: Loop '表示待ち
ie.Document.forms("sf1").elements("srchtxt").Value = "おいしいラーメン" '検索文字
ie.Document.forms("sf1").submit '検索
Do While (ie.ReadyState <> READYSTATE_COMPLETE) Or ie.Busy: Loop '表示待ち
If InStr(ie.Document.body.innertext, "に一致するウェブページは見つかりませんでした") > 0 Then
MsgBox "0件"
Else
MsgBox ie.Document.all("yschinfo").all(6).innertext & "件"
End If
Set ie = Nothing
End Sub

とりあえず
Set ie = GetObject("", "InternetExplorer.Application")
Set ie = GetObject(, "InternetExplorer.Application")
のどちらかで取得できると思います。
Set ie = CreateObject("Shell.Application").Windows(0)
で取得する方法もあるらしいのですが、普通のフォルダもieとして認識してしまうため、純粋にieだけを取得する場合はチェックが必要だと思います。
取得したieでyahooで"おいしいラーメン"の検索結果の件数を表示します。
Sub sample()
Const READYSTATE_COMPLETE = 4
Dim ie As Ob...続きを読む

QIE を開いてページ内のリンクをクリックする VB スクリプト

IE を開いて、ページ内のリンク (アンカー) をクリックして、リンク先のページを開くまでの VB スクリプトの書き方を教えてください。

Aベストアンサー

http://www.ken3.org/cgi-bin/group/vba_ie.asp
このページが参考になりますよ。

QINPUTにnameがない場合のsubmit

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン">

のような感じで、nameの属性がありません。
こういうときは、VBAではどうすればログインできるのでしょうか。

初歩的な質問ですみませんが、わかる方教えてください。

<FORM ACTION="login.asp" METHOD="POST">
USER ID:<INPUT TYPE="text" NAME="userid" SIZE="12"><br>
パスワード:<INPUT TYPE="password" NAME="pass" SIZE="12"><br>
<INPUT TYPE="submit" NAME="btn01" VALUE="ログイン">
<INPUT TYPE="reset" VALUE="クリア">
</FORM>

上記のHTMLに対して、VBAで操作する場合、
データセットした後

objIE.document.all.btn01.Click 'クリックメソッドを実行

で、submit出来るかと思います。

今、VBAで自動ログインしたいサイトが

<INPUT TYPE="submit" VALUE="ログイン...続きを読む

Aベストアンサー

objIE.document.forms(0).elements(2).click
または
objIE.document.getElementsByTagName("INPUT")(2).click

Qブラウザ起動~ログインまでのバッチ化

ブラウザを立ち上げ、特定のページにアクセスし(例えばmixi)、
IDとパスワードを入力してログイン、という作業を
バッチ化できないものかと考えているのですが、可能でしょうか?
可能でしたら、やり方を教えてください。

Aベストアンサー

ユーザ名とパスワードの入力画面は必要が無いという意見もありますが(そして mixi の場合それは真ですが)、ページによってはセッションIDなどが発行されるため、どんな時でも必要がないわけではありません。

と前置きしておいて、私だったら ruby win32ole で自動化するかなあ。
mixi だったらこんな感じ。

#!ruby -Ks
require "win32ole"
ie = WIN32OLE.new("InternetExplorer.Application")
ie.Navigate("http://mixi.jp/")
ie.Visible = true
wait_load(ie)
while ie.Busy
sleep 1
end
ie.Document.getElementByID("email").Value = "your@mail.address"
ie.Document.getElementByID("password").Value = "yourpassword"
inputs =ie.Document.getElementsByTagName("input")
inputs.item(4).click

ユーザ名とパスワードの入力画面は必要が無いという意見もありますが(そして mixi の場合それは真ですが)、ページによってはセッションIDなどが発行されるため、どんな時でも必要がないわけではありません。

と前置きしておいて、私だったら ruby win32ole で自動化するかなあ。
mixi だったらこんな感じ。

#!ruby -Ks
require "win32ole"
ie = WIN32OLE.new("InternetExplorer.Application")
ie.Navigate("http://mixi.jp/")
ie.Visible = true
wait_load(ie)
while ie.Busy
sleep 1
end
ie.Do...続きを読む

QVBS実行時エラー オブジェクトがありません 回避方法について

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだとは思うのですが、何が原因かがわからなく。。

○エラーメッセージ
エラー:オブジェクトがありません。:'objIE.Document.getElementByName(...)(...)'
コード:800A01A8
ソース:Microsoft VBScript 実行時エラー

○コード
'Option Explicit

Dim tmp 'CSV格納
Dim tmp2 'CSV分割
Dim SiteArray(10) 'ID,PW,URL格納
Dim SiteURL 'URL格納
Dim SiteID 'ID格納
Dim SitePW 'PW格納

Dim i
dim objFSO
dim stmCsvFile

'URL,ID,PWをCSVより読込
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set stmCsvFile = objFSO.OpenTextFile("C:\Users\***\Desktop\login.csv")

Do Until stmCsvFile.AtEndOfLine = True
tmp = stmCsvFile.readline
tmp2 = Split(tmp, ",")
SiteArray(i) = tmp2(1)
i = i + 1
Loop

stmcsvfile.Close


'URL,ID,PWを格納
SiteID = SiteArray(1)
SitePW = SiteArray(2)
SiteURL = SiteArray(0)

'---------- ひらく

Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate SiteURL
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'---------- ID/PASSの入力

objIE.Document.getElementsByName("username")(0).Value = SiteID
objIE.Document.getElementsByName("password")(0).Value = SitePW

'---------- SUBMIT

objIE.Document.getElementsByName("login_form")(0).Submit
Do Until objIE.busy = False And objIE.readyState = 4 : Loop '待ち合わせ

'----------

宜しくお願い致します。

タイトルの件ですが、現在CSVよりIDとPWを読み込み、Webページに自動ログインできるVBSを作成しております。
ネットの情報を頼りに下記ソースを作成し、自動ログインできるところまでは達成しました。
しかしながら、一回目の実行時はいいのですが、二回目以降時間を置かずにVBSを起動すると
エラーが発生します。(IEは起動し、ログイン自体は出来ます)
本エラーの回避方法をご教授願えませんでしょうか。

エラーの発生場所は objIE.Document.getElementsByName("username")(0).Value = SiteID
あたりだ...続きを読む

Aベストアンサー

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるかどうかさえ確認できませんよね。
その辺りはどうなんでしょうか?それで、Length プロパティを調べるように書いたわけです。

ふつう、例えば、ここの「教えて!goo」なんかでも、IDとパスワードは、きちんと、[ID(uname, pass)]を持っています。そしてIDには、添字は存在しません。

VBAがあれば、VBEditorのローカルウィンドウで、そのプロパティを確認していただくしかないと思います。もしかしたら、最初からとれていないのかもしれません。

こんにちは。

>コメント頂いた箇所を下記の通り処理を変更しましたが現象はほぼ変わりませんでした。

#1で私の書いた、IsObjectは一般論ですが、個別の問題になるとかなり話は込み入ってしまうから、やめておいたことですが、なんといっても、VBSで、どのように開発しているかは分かりませんが、そのオブジェクトのプロパティとか、確認をして開発したのでしょうか。

>Set upw =objIE.Document.getElementsByName("password")
の時点で、upw を確認できない状態ですと、
upw(0) という「添字(index)」があるか...続きを読む

QVBAからIEを操作する時のウィンドウの選択の仕方がわかりません

VBAで、webページを操作するマクロを組んでいます。
具体的な手順としては、セルの商品番号をweb上の検索ボックスに入力して、別ウィンドウで開いた情報を「すべて選択」「コピー」してexcellの別シートに「貼り付け」までを行うものなのですが、
別ウィンドウで開いたページに対して、Sendkeysを行うにはどうやったらいいのでしょうか。
仮に、入力ページをA、結果ページをBとしたとき、Aに対しての入力とBページの表示までは出来ているのですが、Bページに対しての操作が出来ません。

ちなみに、事情があってwebクエリはあえて使っていません。
どなたか、いい解決方法・プロシージャをご存知でしたらよろしくお願いします。

Aベストアンサー

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kotaeru.php3?q=" & Range("A1").Value

みたいなコードで検索結果ページを開くことができると思います。同様に、商品番号
を渡すパラメータがあるはずですから、探して見て下さい。CGI にパラメータを渡す
方法が Get でも Post の場合でも検索フォームの HTML ソースを見れば分かります。

取り合えず、一度検索フォームの HTML ソースを見てみましょう。

これが可能なら、コードで IE オブジェクトを作り、直接検索結果のページを開くこ
とができますので、IE のウインドウハンドルやウインドウタイトルは簡単に取得
できます。

簡単な例です。A1 セルの値を Google で検索し、結果を A5 セルに貼り付けます。


Option Explicit

Private Declare Function SetForegroundWindow Lib "user32.dll" ( _
  ByVal hWnd As Long _
) As Long
  
Sub Sample()

  Dim IE   As Object
  Dim strURL As String
  Dim lngRet As Long
  
  Const READYSTATE_COMPLETE = &H4
  
  strURL = "http://www.google.com/search?hl=ja&lr=lang_ja&ie=Shift_JIS&q="
  strURL = strURL & Range("A1").Value
   
  Set IE = CreateObject("InternetExplorer.application")
  IE.Visible = True
  IE.navigate strURL
  Do
    DoEvents
  Loop Until Not IE.Busy And IE.readyState = READYSTATE_COMPLETE
  
  ' IE のウインドウをアクティブにする
  lngRet = SetForegroundWindow(IE.hWnd)
  If lngRet <> 0 Then
    ' アクティブにできたらキー送信して結果をコピー
    SendKeys "^a", True
    SendKeys "^c", True
    ' 貼り付け
    Range("A5").Select
    ActiveSheet.Paste
  End If
  Set IE = Nothing

End Sub

どうしても検索フォームを経由し、新しい IE を開く必要がある場合は、
参考 URL 先の記事が参考になると思います。

参考 URL: http://www.ken3.org/cgi-bin/group/vba_ie.asp

ちなみに、SendKeys を使わない方法としては、IE.Document.body.innerHTML
で HTML ソースは取得し、クリップボードに転送してからペースト、、

というのでも良いかもしれません。

では。

こんにちは。KenKen_SP です。

検索フォーム経由ではなく、検索結果のページをコードで直接開けないですか?
例えば、教えてGooなら

http://oshiete1.goo.ne.jp/kotaeru.php3?q=


URL の後ろに ? マークがあります。この記号以下は CGI に渡すパラメータです。
q= の後ろに質問番号が入りますので、予め質問番号が分かっている場合は、
この URL に質問番号を連結してやれば、直接開くことができます。

仮に、質問番号が A1 セルに入っているなら

IE.Navigate "http://oshiete1.goo.ne.jp/kot...続きを読む

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

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

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

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

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

「IE.docu...続きを読む

Aベストアンサー

こんにちは。

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

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 で必ずしも上手くいくとは限りませんが。。

私の環境では、一見して動作してます。

こんにちは。

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

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

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

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

ie.document.form(0).file.focus
CreateObject("Wscript.Shell"...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング