Access VBAで、Excelブックを読み取り専用で開くサンプルをご紹介しました。
Access VBAを使って、Word文書を読み取り専用で開くSubプロシージャも紹介しておきます。
Word文書を読み取り専用で開くサンプルプロシージャ
Cドライブのtempフォルダーにsample.docxを用意しておいて、以下のSubプロシージャを実行してください。
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
- Newer:VBAで結合セルをClearContentsしてもエラーにならないように-Range.MergeArea
- Older:Selection.WholeStoryを解除する-Collapseメソッド
Home » Access VBA » Access VBAでWord文書を読み取り専用で開く