「excel vba wordのselectionオブジェクト取得」
という検索キーワードでアクセスがありました。
Word.Selectionを取得するサンプル
Excelから表示したVBEで標準モジュールを挿入し、以下のSubプロシージャを作成後、Word文書が1つだけ開かれた状態で本文の一部を選択しておいてから、実行してみてください。
On Error GoTo ErrHandl
Dim wd_app As Object ' Word.Application
Set wd_app = GetObject(Class:="Word.Application")
Dim wd_selection As Object ' Word.Selection
Set wd_selection = wd_app.Selection
Stop
ErrHandl:
Dim msg As String
Select Case Err.Number
Case 429
msg = "Wordが起動していないようです。"
Case Else
msg = Err.Description & vbCrLf & Err.Number
End Select
Err.Clear
MsgBox msg
End Sub
上記のSubプロシージャには、いわゆるExcel VBAのコードは含まれていませんから、PowerPointやAccessから表示したVBEでもこのまま実行できます。
「excel vba wordのselectionオブジェクト取得」ということですから、CreateObject関数ではなくGetObject関数を使ったコードにしています。
Dim wd_app As Object
Set wd_app = GetObject(Class:="Word.Application")
Wordが起動していない状態から、Word文書を開き参照するのなら、SelectionオブジェクトよりRangeオブジェクトを使うはずです。
WordのApplicationオブジェクトを取得した後は、実質的にWord VBAのコードです。
ローカルウィドウでWord.Selectionを確認しましょう
Stopステートメントでステップ実行モードになったら、拙著『いちばんやさしいPowerPoint VBAの教本』でも多用しているローカルウィドウを使って、オブジェクト変数wd_selectionにWordのSelectionオブジェクトが格納されている様子を確認しましょう。
WordのSelectionオブジェクトには、たくさんのプロパティが用意されていますから、
ローカルウィドウにもたくさんのデータが表示されます。Textには、Word文書で選択していた文字列が、下図のように表示されているはずです。
With文を使う場合
WordのApplicationオブジェクトを取得する部分は、オブジェクト変数を使わず以下のようにWith文にしても、もちろんOKです。
On Error GoTo ErrHandl
With GetObject(Class:="Word.Application")
Dim wd_selection As Object ' Word.Selection
Set wd_selection = .Selection
Stop
End With
ErrHandl:
- 『Excel VBAユーザーのためのWord VBA入門(1)』出ました。
- 『Word VBA入門』に登場するオブジェクトごとのプロパティ一覧
- 『Word VBA入門』に登場するオブジェクトごとのメソッド一覧
最終更新日時:2022-01-26 15:09
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWord.Selectionを取得する