2017-11-17 11 views
0

Word文書をさまざまなクライアントから定期的に取得していて、時にはそれらを「読み取り専用」モードで私に送信します。 'View> Edit Document'を手作業で行っても大したことではありませんが、VBAコード内でこれを行う方法はわかりません。読み取り専用Word文書(VBA)を編集する方法

文書を編集可能な状態で開くか、開いた状態で編集可能な状態に切り替えることで、自分のニーズに十分対応できます。

「readOnly = false」で、「readOnly recommended」(Document.OpenのMS manページを読んでいる)に設定されているように、ドキュメントを開くことができないことに注意してください。

CONTEXT: ドキュメントが既定で開いていた「読み取りモード」をオフにすると、問題が発生しました。私はこの質問と回答hereを投稿しました。

+1

編集可能なドキュメントを「読み取り専用」および「保存」する必要があります。オリジナルファイルを削除するには、 'Kill'​​コマンドを使います。 – Variatus

+0

@Variatus、SaveAsを編集可能なドキュメントに実行するために必要なコマンド・フラグを詳しく教えてください。ここで私はうまくいきませんでした(新しい文書も読み取り専用として開かれました): 'Set oWd = Documents.Open(origFile)' 'oWd.SaveAs2 FileName:=newFile, ReadOnlyRecommended:=False' 'oWd.Close' 'Set oWd = Documents.Open(newFile)' user3617389

+0

また、申し訳ありませんが、私のコメントのための改行を理解できませんでした:(。 – user3617389

答えて

0

以下のコードは、プロシージャに指定された引数に応じてReadOnly属性をTrueまたはFalseに設定して、クローズファイルのReadOnly属性を変更します。

Private Sub SetReadOnlyProperty(Fn As String, _ 
           ByVal ReadOnly As Boolean) 
    ' 21 Nov 2017 

    Dim Fso As Object 
    Dim Doc As Object 

    Set Fso = CreateObject("Scripting.FileSystemObject") 
    Set Doc = Fso.GetFile(Fn) 

    If (Doc.Attributes And vbReadOnly) <> Abs(Int(ReadOnly)) Then 
     Doc.Attributes = Doc.Attributes Xor vbReadOnly 
    End If 
End Sub 

この手順を実行するには、MS Scripting Runtime DLLが必要です。このアクセスを有効にするには、[VBE]ウィンドウの[ツール]> [参照]からボックスMiscrosoft Scripting Runtimeをオンにします。以下は、関数を呼び出す方法の例です。提供されたファイルが存在しない場合、エラーが発生することに注意してください。

Private Sub TestReadOnly() 
    SetReadOnlyProperty "H:\Test Folder\Test File.docx", False 
End Sub 
+0

説明のために@Variatus 。 このリファレンスを有効にする際に、どんな危険があるのか​​、他のワークステーションでは他のワークステーションで作業していないことがありますか? (私が知る限り)いくつかのDLLを無効にするセキュリティポリシー...だから、私は実際には、ベースラインの2010/2013 MS Officeの展開よりも動作する参照が少ないかもしれません... – user3617389

+0

私は権威ではありませんしかし、私はすべてのMicrosoft DLLが安全であると信じていますが、その中にはデフォルトで読み込みを高速化できるようにロードされていないものがあります。あなたが尋ねることさえしたくない他のVBA DLLの中にd。それはあなたが注意すべきカスタムDLLに来るときです。ところで、私は 'Scripting Runtime'への言及が文書と共に保存されていると思うし、DLL自体はOfficeのインストールの一部です。したがって、すべてのコンピュータで参照を有効にする必要はありません。 – Variatus

関連する問題