Home » Access VBA » Access VBAでWord文書を読み取り専用で開く

Access VBAでWord文書を読み取り専用で開く

動作検証バージョン:Windows 11 Home + 64bit Access & Word バージョン 2403(ビルド17404.20000クイック実行)ベータチャネル

Access VBAで、Excelブックを読み取り専用で開くサンプルをご紹介しました。

Access VBAを使って、Word文書を読み取り専用で開くSubプロシージャも紹介しておきます。

Word文書を読み取り専用で開くサンプルプロシージャ

Cドライブのtempフォルダーにsample.docxを用意しておいて、以下のSubプロシージャを実行してください。

Sub Word文書を読み取り専用で開く()
On Error GoTo ErrHandl
 
 Dim wd_app As Object
 Set wd_app = CreateObject(Class:="Word.Application")
 wd_app.Visible = True
 
 Dim wd_doc As Object
 Set wd_doc = _
   wd_app.Documents.Open("C:\temp\sample.docx", ReadOnly:=True)
  
 MsgBox wd_doc.Range.Text
  
 Set wd_doc = Nothing
 Set wd_app = Nothing

Exit Sub
ErrHandl:
 MsgBox Err.Description & vbCrLf & Err.Number
 Select Case Err.Number
  Case 5174
   MsgBox "指定されたWord文書が見つかりませんでした。"
  Case Else
   MsgBox Err.Description & vbCrLf & Err.Number
 End Select
 Err.Clear
End Sub

正常に実行できると、C:\temp\sample.docxが読み取り専用で開かれ、その本文に入力されている文字列がメッセージボックスに表示されます。

サンプルプロシージャで行っている処理

Word文書を開きたいので、今回はVBAのCreateObject関数の第1引数Classに、文字列「Word.Application」を指定することで、Word.Applicationオブジェクトへの参照を取得し、変数wd_appへ代入しています。

Dim wd_app As Object
Set wd_app = CreateObject(Class:="Word.Application")

この後、この変数wd_appを経由して行う処理は、実質的にWord VBAです。

Word.Application.VisibleでWordを表示

「CreateObject(Class:="Word.Application")」でWordが非表示状態で起動しますが、非表示状態では何が起きているかわからないので、Excelの場合と同様に、Word.Application.VisibleプロパティにTrueを指定することで、

Wordが見える状態にしています。

wd_app.Visible = True

Word.Documents.Openの引数ReadOnlyを指定して読み取り専用で開く

次が読み取り専用で開くコードです。

Dim wd_doc As Object
Set wd_doc = _
  wd_app.Documents.Open("C:\temp\sample.docx", ReadOnly:=True)

拙著『Excel VBAユーザーのためのWord VBA入門(1): Document・Range・Selectionの基本編』の、[2-7. Add・OpenメソッドはDocumentsが持つ]でも解説しているとおり、DocumentsコレクションにWord文書を開くOpenメソッドが用意されています。

Word.Documents.Openメソッドの、引数ReadOnlyにTrueを指定することで、

Word文書も読み取り専用で開くことができます。

Word.Document.Rangeで本文の文字列範囲を取得

上記のSubプロシージャでは、Word.Documents.Openメソッドの戻り値を変数wd_docに代入しておいてから、拙著の[3-2. Document.RangeメソッドでRangeを取得する]でも解説している、Word.Document.Rangeメソッドで

本文の全文字列範囲を表すWord.Rangeオブジェクトを取得し、Word.Range.Textプロパティで取得できる文字列を

メッセージボックスに表示しています。

MsgBox wd_doc.Range.Text
[スポンサードリンク]

Home » Access VBA » Access VBAでWord文書を読み取り専用で開く

「Access VBA」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.