アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (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の場合はわからなくてすみません。
独学なのでもっといい方法があるかもしれないですが。
    • good
    • 2
この回答へのお礼

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

お礼日時:2005/04/09 11:06

>インターネットエクスプローラーに接続



私はオブジェクト使いではありませんので、ネットを探してみました。

下記リンクの
[No.156 TypeNameとShell.Applicationを使い起動済みのIEを探す]
が役に立つかも知れません。

参考URL:http://www.ken3.org/cgi-bin/group/vba_ie.asp
    • good
    • 0
この回答へのお礼

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

お礼日時:2005/04/09 11:03

Set appWord = GetObject(, "Word.Application")


MsgBox appWord.Documents.Count

この回答への補足

 ありがとうございます。GetObject関数の引数をよく理解していなかったようです。ExcelからWord、AccessからExcelなどはうまく接続することができました。

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

補足日時:2005/04/06 16:30
    • good
    • 0

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

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


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