痔になりやすい生活習慣とは?

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

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

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

A 回答 (1件)

とりあえず


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
    • good
    • 0
この回答へのお礼

サンプル有難うございます!!
これが、実現したかったので大変助かりました。

お礼日時:2009/08/10 22:13

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

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

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

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

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

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...続きを読む

QVBAで既に開いている別アプリケーションのオブジェクトを得る

 VBAで別のアプリケーションにアクセスするには、CreateObject関数を使ってアプリケーションのオブジェクトを作るようにすると思います。例えば、ワード文書にアクセスするなら次の構文になると思います。
  Set appWord = CreateObject("Word.Application")
  appWord.Visible = True
 しかしこれだと新しいワード文書を作ったり、既存のワードファイルを開いて扱うことしかできません。GetObject関数を用いても同様のようです。既に別ウィンドウで開いているワード文書があって、そこへアクセスするにはどうしたらよいのでしょうか。
 また、同じアプリで複数のファイルを開いている場合には、どうやって目的のファイルへのオブジェクトを得るのでしょうか。(ファイル名などを参照して判断?)

Aベストアンサー

Internet Explorerで開いているWindowを取得することはできますよ。

そのためには、まず開いているWindowを順番に取得し、それがInternet Explorerならばそれをオブジェクトに代入し、ひとつもIEウィンドウが存在しない場合は新規作成(CreateObject)すればいいのです。
Windowを取得するにはShell.Applicationというのを使います。

Dim ObjIE As Object
Dim ObjShell As Object
Dim ObjWindow As Object
Dim WinExist As Boolean

WinExist = False
Set ObjShell = CreateObject("Shell.Application")
For Each ObjWindow In ObjShell.Windows
If TypeName(ObjWindow.Document) = "HTMLDocument" Then
 WinExist = True
 Set ObjIE = ObjWindow
End If
Next
Set ObjShell = Nothing

If Not WinExist = True Then
Set ObjIE = CreateObject("InternetExplorer.Application")
End If

ObjIE.Navigate "http://nantokakantoka.html"
ObjIE.Visible = True


というような感じです。
Wordの場合はわからなくてすみません。
独学なのでもっといい方法があるかもしれないですが。

Internet Explorerで開いているWindowを取得することはできますよ。

そのためには、まず開いているWindowを順番に取得し、それがInternet Explorerならばそれをオブジェクトに代入し、ひとつもIEウィンドウが存在しない場合は新規作成(CreateObject)すればいいのです。
Windowを取得するにはShell.Applicationというのを使います。

Dim ObjIE As Object
Dim ObjShell As Object
Dim ObjWindow As Object
Dim WinExist As Boolean

WinExist = False
Set ObjShell = CreateObject("Shell.Applicatio...続きを読む

QWebページ中の javascript をVBAから実行するには

VBAで objIE を使用して Webページ中の javascript を実行したいのですが、
onclick="~~" の記述がないケースがあり困っております。
例えば以下のような記述です。

<a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>

onclick の記述がない上記のようなケースでは、javascript の呼び出しはどのようにすればよいのでしょうか?
不可能でしょうか?

Aベストアンサー

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますから、まず最初に、ダメ元で、
id名.Click を一度試してみます。もしくは、この行の上部のコードのオブジェクトのClass名のオブジェクトのひとつから、ヒットさせようとします。

そこでダメなら、ということで、ken3の内容に入るのですが、この著者の結論(正解)は、

ご質問に沿って書くと
For i =0 To objIE.Document.links.Length -1
If objIE.Document.links(i).href ="javascript:;" Then '文字の比較は、大文字・小文字がある
   objIE.Document.Links(i).Click
End if
Next i

ということになっています。私は、このコードは少し古臭く感じます。

ここで、ken3 の所では、Testサイトを用意してくれているので、試してみましたが、ダイレクトでサイトがとれている限りは、やはり、

Testサイト:http://www.ken3.org/vba/test170f.html

 objIE.Navigate "javascript:xxxxx;"

が利くことが分かりました。ただし、実際は、ここで時間待ちをしなくてはならないでしょう。
解説は、フレームからですので、うまく行かなかったようです。

ここを読んでみればよいのですが、だらだらと文章が長いですね。^^;
http://www.ken3.org/vba/backno/vba170.html
この内容のまとめは、この後でします。もし、ダメだったら、こちらも読んでください。

>onclick="~~" の記述がないケースがあり困っております。

最初に、ストレートな回答ではありませんが、私の場合、いくつかの方法を試しています。

>a href="javascript:;" pnb="~~" scdaction="~~" bulkaction="~~" id="~~">~~</a>
この場合は、id がありますから、確実のオブジェクトとして取得できますか...続きを読む

QWEBページからのメッセージをVBAで

いつもお世話になっております。
エクセルVBAでIE制御についてです。
環境はWIN7、IE 9or11とエクセル2010です。

あるページのリンクをクリックすると、
WEBからのメッセージというダイアログボックスが出てきて、
続行しますか? はい いいえ を聞かれます。

その「はい」をVBAで押したいのですが、
sendkeysメソッドで押そうとしてもうまくいきません。

以下に記載したサイトのOKボタンを押すと出てくるものです。
http://kamicha1.web.fc2.com/Excel/Test20090726.html


以下が書いたコードです。


Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long)


Sub test()

Dim ie As Object

Set ie = CreateObject("InternetExplorer.Application")

ie.Visible = True
ie.navigate "http://kamicha1.web.fc2.com/Excel/Test20090726.html"
      
Do While ie.Busy Or ie.readyState < 4
DoEvents
Loop

ie.document.getElementsByClassName("bt2")(0).Click '-ここで止まる

Sleep 2000

SendKeys "{Enter}"

End Sub

ステップ実行していくと、ここで止まると書いた所で、
IE上にダイアログは表示されるのですが、
それ以上ステップ実行ができなくなってしまいます。

ダイアログを自分でOKかキャンセルで消すと続きが動くようになります。
その間はVBEはビジー状態となり操作できません。

そのためそれ以降のsendkeysメソッドに
たどり着けない状況かと思われます。

いろいろ調べたところIE8以降はダイアログボックスは
IEから出ているのではなくOS?から出ているとの事でした。

上記のサイトはHTML本体にjavaスクリプトが記載されており、
それをVBAから操作すればどうにかOKボタンが押せるらしいのですが、
自分が操作したいページにはそれらしき記載がありませんでした。

対象のアンカータグは
<a herl=URL 中略 data-comfirm=続行しますか? >
のような感じで記載がありました。

完全に煮詰まっております。
自動でOKをクリックするかEnterキーでOKを押すでも構いません。
どうかご教授お願いいたします。

いつもお世話になっております。
エクセルVBAでIE制御についてです。
環境はWIN7、IE 9or11とエクセル2010です。

あるページのリンクをクリックすると、
WEBからのメッセージというダイアログボックスが出てきて、
続行しますか? はい いいえ を聞かれます。

その「はい」をVBAで押したいのですが、
sendkeysメソッドで押そうとしてもうまくいきません。

以下に記載したサイトのOKボタンを押すと出てくるものです。
http://kamicha1.web.fc2.com/Excel/Test20090726.html


以下が書いたコードです。


Dec...続きを読む

Aベストアンサー

ご参考
https://gist.github.com/kumatti1/4028479

QvbaでIEの名前を付けて保存(A)をしたい

VBA で IEの通知バー を操作したいです。
SendKeys で 通知バーの 保存(S) はできたのですが、
保存(s)の右隣の ▼ をクリックするとでてくる、 名前を付けて保存(A) の方法がわかりません。

どのようなキーをおくればよいのでしょうか。


他の質問をみると、SendKeysではなく ○○がよいですよ みたいな内容しか見つからず、
回答をみつけることができなくて困っておりますのでよろしくお願いいたします。

Aベストアンサー

VBAでインターネット上のファイルをダウンロードする方法をまとめてみました。 | 初心者備忘録
http://www.ka-net.org/blog/?p=4855
とか。

QVBAでIEの操作→サブウインドウを操作するには

以下の「oya.html」「ko.html」があります。
それを、VBAで「oya.html」を開き、「子ウインドウを開く」リンクをクリックさせて、開いた「ko.html」の「子ウィンドウを閉じる」リンクをクリックさせたいのだがどうすればよろしいでしょうか?
---------VBA ↓---------------------------------------------
Private Sub CommandButton1_Click()
Dim objIE As Object 'Object型
'IEのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = True
objIE.Navigate "file:///C:/oya.html"'「oya.html」を開く
'----表示待ち↓--------
Do While objIE.Busy
 DoEvents
Loop
Do While objIE.document.ReadyState <> "complete"
DoEvents
Loop
'----表示待ち↑----------
For Each linkitem In objIE.document.all.tags("A") 'Aタグ
If linkitem.innerText = "子ウインドウを開く" Then
linkitem.Click
End If
Next
'----表示待ち↓--------
Do While objIE.Busy
DoEvents
Loop
Do While objIE.document.ReadyState <> "complete"
DoEvents
Loop
'----表示待ち↑----------
  For Each linkitem In objIE.document.all.tags("A") 'Aタグ
If linkitem.innerText = "子ウィンドウを閉じる" Then
linkitem.Click
End If
Next
End Sub
---------------↑-------------------------------------------
--------oya.html ↓-----------------------------------------
<html>
<head><script>
function showModal(){
var value = showModalDialog('ko.html');
}
</script></head>
<TITLE>親ウィンドウ</TITLE>
<body>
<a href="javascript://" onclick="showModal()">子ウインドウを開く</a><br>
</body>
</html>
-----------------↑-----------------------------------------
--------ko.html ↓--------------------------------------------
<html>
<TITLE>子ウィンドウ</TITLE>
<body>
<a href="#" onClick="window.close(); return false;">子ウィンドウを閉じる</a><br>
</body>
</html>
------------------↑-----------------------------------------

以下の「oya.html」「ko.html」があります。
それを、VBAで「oya.html」を開き、「子ウインドウを開く」リンクをクリックさせて、開いた「ko.html」の「子ウィンドウを閉じる」リンクをクリックさせたいのだがどうすればよろしいでしょうか?
---------VBA ↓---------------------------------------------
Private Sub CommandButton1_Click()
Dim objIE As Object 'Object型
'IEのオブジェクトを作る
Set objIE = CreateObject("InternetExplorer.application")
objIE.Visible = Tru...続きを読む

Aベストアンサー

状況を理解しました。
子ウィンドウを、showModalDialog で開いている為に、子ウィンドウを閉じるまで Excel に制御が返ってこないワケですね。
VBA で制御できるレベルではなさそうです。一応参考 URL を添付しておきますが。。。

http://www.usefullcode.net/2006/12/ieihtmldocument2.html
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200509/05090016.txt

QVBAで既に開いているIEをアクティブにするには

質問しつれいします。
三流君のサイトをみながら、エクセルのVBAで、IEを開き証券口座にログインするプログラムを作りました。

一つのプログラムでIEを起動して、注文実行まではできるのですが、既に開いている(口座にログインしている)IEをアクティブにしてそこから注文する方法がわからず困っています。

相場が開いている間、シグナルが出た場合、すぐにIEをアクティブにして、注文を入力するプログラムをつくりたいと思っています。

既に開いてるIE(口座にログインしている)を選択し、objIE.navigate "" 'で指定のページに移動できるようにするにはどうしたらいいでしょうか?

Aベストアンサー

とりあえずGetObjectでInternetExplorer.Applicationを拾えばよいでしょう。
ただしIEは一度に複数開けるため開いているIEをアプリケーションからつかむのは
あまりお勧めできません。
できればCreateObjectした方がよいと思います。

Q現在、開いているIEの子Windowの操作・情報取得はどうやってできるでしょうか。

あるWebページで親ページのリンクから派生した子Windowのソースの取得、子Window内のリンクのクリックなどを行いたいです。子ページではデータが自動更新され、その変化をプログラムで記録したいと考えています。

親ページからきちんとログインした状態でないと、いきなり子ページのURLを指定してもエラーになるようなページです。

そのため、手動で子Windowを立ち上げて、後はプログラムでいろいろと自動処理をしようと思うのですが、そのためには、現在開いている子Windowの識別情報のようなものを取得する必要があります。このためにはどのクラス(ActiveX?,.NET?)のなんという関数()を使えばよろしいのでしょうか。

Aベストアンサー

私が思いついたのは、子WindowのタイトルかURLで検索する方法。
例えば、Wshだと…
子Windowのソースを保存するWshです。

---
''子Windowのタイトル
Ko_Title=""

''子WindowのURL
Ko_Url=""

''保存先ディレクトリ
SaveDir = "C:\"

'子Windowを探す.
Set IEAppKo = Nothing
For Each IEApp In CreateObject("Shell.Application").Windows()
If InStr(1, IEApp.fullname, "iexplore.exe", vbTextCompare) > 0 Then
''If IEApp.LocationUrl = Ko_Title Then 'URLで検索する場合はこちら
If IEApp.LocationName = Ko_Title Then
Set IEAppKo=IEApp
Exit For
End If
End If
Next

If IEAppKo Is Nothing Then
MsgBox("子Windowを開いていません。")
WScript.Quit
End If

''子WindowのBody部分のソースを保存
nowdt = Now()
TimeStamp = CStr( _
Year(nowdt) & _
Right("00" & Month(nowdt),2) & _
Right("00" & Day(nowdt),2) & _
Right("00" & Hour(nowdt),2) & _
Right("00" & Minute(nowdt),2) & _
Right("00" & Second(nowdt),2))

Set objFileSys = CreateObject("Scripting.FileSystemObject")
SaveFileName = objFileSys.BuildPath(SaveDir,TimeStamp & ".html")
Set objOutFile = objFileSys.CreateTextFile(SaveFileName)
objOutFile.Write(IEAppKo.Document.Body.innerHTML)
objOutFile.Close()

MsgBox("終了")

--
参考URL
http://homepage3.nifty.com/aya_js/wsh/wsh23.htm
http://www.happy2-island.com/vbs/cafe02/capter00701.shtml
http://msdn.microsoft.com/library/default.asp?url=/workshop/browser/webbrowser/reflist_vb.asp

私が思いついたのは、子WindowのタイトルかURLで検索する方法。
例えば、Wshだと…
子Windowのソースを保存するWshです。

---
''子Windowのタイトル
Ko_Title=""

''子WindowのURL
Ko_Url=""

''保存先ディレクトリ
SaveDir = "C:\"

'子Windowを探す.
Set IEAppKo = Nothing
For Each IEApp In CreateObject("Shell.Application").Windows()
If InStr(1, IEApp.fullname, "iexplore.exe", vbTextCompare) > 0 Then
''If IEApp.LocationUrl = Ko_Title Then 'URLで検索する場合はこちら
...続きを読む

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

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")

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


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

人気Q&Aランキング