GetObject関数でWordやPowerpointを起動する方法
なぜか 久々にダンまち に読み入ってしまい,何もできていない(;´▽`A``
ワールドトリガーといい,ダンまちといい 何度も何度も読んでいるんですが,何度読んでも面白い。
はやく続きが読みたいなぁ( ´ー`)...でも葦原先生,体をお大事にされてください_(._.)_
さて,タイトルのGetObject 私はこれが大嫌いです。
他の方が触れている記事を見ても,自分がいつもやるCreateObjectでの解決法しか考えきれなかったんですが,GetObjectを使いたいという方にそれを示すのは筋が違いますね。
私は,大雑把な部分と,石橋をたたいて壊すような部分の両方を持っているので,
GetObjectで自分が目的とするものを取得できると,正直思っていません。
でも,IEを制御するつもりとか言ってますし,IEに限らず既に開いているものを制御できないといけないと思うので,いいきっかけだからきちんと確認してみようと思いました。
私を取り巻く環境では Word,Powerpoint,Excel,IEを制御できてWord,Powerpoint,Excelにデータを流し込めれば,その他に望むことはほぼありません。
ただ,確実に進めたいといことがあり,既に開いているウィンドウを捕捉する,ということはまずやらずに来ました。
でも,そこを身に着ければだいぶ話が変わるので,きちんと考えてみようと思います。
今は都合がよいことに,今のOfficeアプリはSDI形式のものばっかりなんですね。助かるなぁ。
Officeアプリの制御はとてもやりやすいですね,ほぼ同じ表現になります。
Word
Sub test2() Dim WDApp As Word.Application Set WDApp = GetObject(, "Word.Application") Dim WDDoc As Document Stop End Sub
ローカルウィンドウで確認できていない頃は,とても不安なままだったわけですが,このコードを書いて,ローカルウィンドウで確認すると,その挙動に納得がいきます。
これなら怖がれずに使えますし,Collectionについてだいぶ使い慣れた今では,
インデックスで制御したり,ファイル名をキーとしてオブジェクトを狙い撃ちして変数に放り込める自信が沸きます。
Sub test3() Dim PPTApp As PowerPoint.Application Set PPTApp = GetObject(, "Powerpoint.Application") Dim PPPresen As Presentation Stop End Sub
パワーポイントで二つのオブジェクトを開いているんですが,ちゃんとプレゼンテーションのItem1,Item2があります。
nameプロパティにはファイル名がそれぞれ入っていますね。Excelのシートをシート名で制御するくらいの簡単さでそれぞれを指定することができます。
こんなに簡単だったんだ。
今まで完全に避けていたのがもったいなく感じるレベルですね。
Excelも全く同じ作法で開けますので,逆にExcelを制御する場合も簡単ですね。
IEは・・けっこう違いますね。しかもローカルウィンドウの情報となかなかあわない・・・(ノД`)・゜・。
ヨクワカラナイゾ。。仕方ない,慣れるしかないよね。
Sub test() Dim colSh As Shell32.Shell Set colSh = New Shell32.Shell Dim win As Object For Each win In colSh.Windows If TypeName(win.Document) = "HTMLDocument" Then Debug.Print win.Document.Title Else Debug.Print win.Name End If Next Stop End Sub
これでタイトルで補足して,動作に入る,という感じになるんだと思います。
今は全然慣れないので,参照設定を利用しています。
あとこの本とにらめっこしています。
Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応
- 作者: 近田伸矢,植木悠二,上田寛
- 出版社/メーカー: インプレス
- 発売日: 2013/04/19
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (7件) を見る
IEは先が長いなぁ。。まぁ3月中には使いこなせるようになろう。
あと,テキストをがんがん使わないといけないでしょうから 正規表現も・・・((((;゚Д゚))))