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の場合はわからなくてすみません。
独学なのでもっといい方法があるかもしれないですが。
うまくいきました。ありがとうございます。
InternetExplorerのウィンドウ内に接続していくのは大変ですね。No.2のでご紹介いただいたURLなどもみながら勉強しています。ページ内のFrame、Table、Formなどにたどり着いていくのが大変だということがよく分かりました。
No.2
- 回答日時:
>インターネットエクスプローラーに接続
私はオブジェクト使いではありませんので、ネットを探してみました。
下記リンクの
[No.156 TypeNameとShell.Applicationを使い起動済みのIEを探す]
が役に立つかも知れません。
参考URL:http://www.ken3.org/cgi-bin/group/vba_ie.asp
ありがとうございます。
ご紹介いただいたURLは確かに勉強になります。ネットを検索するにもテクニックが必要なのですね。自分ではなかなか探せませんでした。
No.1
- 回答日時:
Set appWord = GetObject(, "Word.Application")
MsgBox appWord.Documents.Count
この回答への補足
ありがとうございます。GetObject関数の引数をよく理解していなかったようです。ExcelからWord、AccessからExcelなどはうまく接続することができました。
ただ、インターネットエクスプローラーに接続しようとすると、うまくいきません。
Set appInet = GetObject(,"InternetExploere.Application")
で実行すると、「実行時エラー429、ActiveXコンポーネントはオブジェクトを作成できません。」のエラーが出てしまいます。Officeアプリと違うのでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- PDF ワードで作った文書のPDF化 5 2023/04/10 16:56
- Visual Basic(VBA) 動かなくなってしまった古いVBAを動くようにしたい 8 2022/09/20 13:57
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Word(ワード) officeの自動保存について教えてください 2 2023/06/18 09:11
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
- Excel(エクセル) エクセルでのアクセス履歴をとりたいです 1 2022/06/13 17:30
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
起動中のアプリ、ソフトの取得
Visual Basic(VBA)
-
vbaから他のアプリを終了
Visual Basic(VBA)
-
Excel VBAで他アプリケーションの文字列取得
Excel(エクセル)
-
-
4
EXCELのVBAでWORDが開いてあるかチェック
Excel(エクセル)
-
5
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
6
VBAで他のプログラムが起動しているか調べる方法
Visual Basic(VBA)
-
7
Vba アプリケーションが立ち上がるまで待つ
Excel(エクセル)
-
8
他のアプリケーションの終了処理
Visual Basic(VBA)
-
9
VBAで任意のウインドウのサイズを変更する方法
Visual Basic(VBA)
-
10
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
11
EXCEL VBAから他アプリケーションを操作することは可能ですか?
Visual Basic(VBA)
-
12
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
13
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
14
エクセル(複数インスタンス)より任意のWorkBookを取得したい
Visual Basic(VBA)
-
15
ExcelVBAで既に開いてるwordを閉じる
Excel(エクセル)
-
16
【VBA】 Alt+PrintScreenにてアクティブウィンドウのスクショを貼付する方法
Excel(エクセル)
-
17
現在起動中のアプリケーションの名前を知りたい
Visual Basic(VBA)
-
18
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
19
エクセルのVBAでクリップボードにコピーした画像をpng(or jpg or bmp)保存したい
Visual Basic(VBA)
-
20
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルマクロエラー「'Cells'...
-
VBAで既に開いている別アプリケ...
-
エクセルのVBAの標準モジュール...
-
PowerPointVBAでスライドマスタ...
-
Excelでフィルタをかけると警告...
-
エクセルVBAでcode128のバー...
-
sheetsメソッドの失敗
-
テキストボックス中の文字列の...
-
ある文字列が全て数字であるか...
-
VBAで Set wb = Sheets(1).Cop...
-
コンパイルすると「メソッドま...
-
VBAからPDFファイルにパスワー...
-
[VBA]CDOメッセージ送信エラー
-
オブジェクトが見つかりません
-
実行時エラー 3265「要求された...
-
AccessVBA NULLについて
-
Shell.ApplicationのNameSpace...
-
ExcelVBAでのNZ関数について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
エクセルのVBAの標準モジュール...
-
実行時エラー 3265「要求された...
-
Excelでフィルタをかけると警告...
-
VBAで既に開いている別アプリケ...
-
エクセルマクロエラー「'Cells'...
-
テキストボックス中の文字列の...
-
VBAで Set wb = Sheets(1).Cop...
-
ある文字列が全て数字であるか...
-
VBAからPDFファイルにパスワー...
-
VBScriptでファイルの日時順(降...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
エクセルVBAで2つの画像を比較...
-
PowerPointVBAでスライドマスタ...
-
UserForm1.Showでエラーになり...
-
上下の位置揃えについて
-
VBAについてです。 初心者です...
-
VBAで作成するメール(開封確認...
おすすめ情報