Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordを読み取り専用で開く

Excel VBAでWordを読み取り専用で開く

動作検証バージョン:Windows 11 Home + 64bit Excel & Word バージョン 2503(ビルド18623.20156クイック実行)

「excel vba word 開く 読み取り専用」
といった検索キーワードで、このサイト『インストラクターのネタ帳』へアクセスがありました。

Excel VBAでWord文書を読み取り専用で開くには、どのようなコードを書けばいいのかを調べていた方による検索です。

Word文書を読み取り専用で開くサンプルマクロ

Cドライブのtempフォルダーにsample.docxを用意しておいてから、以下のExcelマクロを実行してください。

Sub Word文書を読み取り専用で開く()
On Error GoTo ErrHandl

 With CreateObject(Class:="Word.Application") 
  .Documents.Open "C:\temp\sample.docx", ReadOnly:=True
  .Visible = True  
 End With

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

サンプルマクロで行っている処理

Excel VBAでWord文書を読み取り専用で開いているのは、以下の部分です。

 With CreateObject(Class:="Word.Application") 
  .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メソッドに指定できるたくさんの引数の1つ、ReadOnlyにTrueを指定することで、

Word文書を読み取り専用で開けます。

 With CreateObject(Class:="Word.Application") 
  .Documents.Open "C:\temp\sample.docx", ReadOnly:=True

だけで、確かにWord文書を読み取り専用で開けるのですが、これだけではメモリ上で開かれているだけでパソコンの画面には何も表示されません。

そこで上記のサンプルマクロでは、開いてから、Word.Application.VisibleプロパティにTrueを設定することで、

  .Visible = True  

Word.Applicationを画面に表示させています。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでWordを読み取り専用で開く

「Office連携」の記事一覧

検索


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

.