• ベストアンサー

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

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

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

  • ベストアンサー
回答No.3

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の場合はわからなくてすみません。 独学なのでもっといい方法があるかもしれないですが。

dKacho
質問者

お礼

うまくいきました。ありがとうございます。 InternetExplorerのウィンドウ内に接続していくのは大変ですね。No.2のでご紹介いただいたURLなどもみながら勉強しています。ページ内のFrame、Table、Formなどにたどり着いていくのが大変だということがよく分かりました。

その他の回答 (2)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>インターネットエクスプローラーに接続 私はオブジェクト使いではありませんので、ネットを探してみました。 下記リンクの [No.156 TypeNameとShell.Applicationを使い起動済みのIEを探す] が役に立つかも知れません。

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

お礼

ありがとうございます。 ご紹介いただいたURLは確かに勉強になります。ネットを検索するにもテクニックが必要なのですね。自分ではなかなか探せませんでした。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

Set appWord = GetObject(, "Word.Application") MsgBox appWord.Documents.Count

dKacho
質問者

補足

 ありがとうございます。GetObject関数の引数をよく理解していなかったようです。ExcelからWord、AccessからExcelなどはうまく接続することができました。  ただ、インターネットエクスプローラーに接続しようとすると、うまくいきません。   Set appInet = GetObject(,"InternetExploere.Application") で実行すると、「実行時エラー429、ActiveXコンポーネントはオブジェクトを作成できません。」のエラーが出てしまいます。Officeアプリと違うのでしょうか。

関連するQ&A