2017-11-17 10 views
0

여러 클라이언트에서 Word 문서를 정기적으로 가져오고 때로는 '읽기 전용'모드로 나에게 보냅니다. '보기> 문서 편집'을 수동으로 실행하는 것은 그리 큰 문제는 아니지만 내 VBA 코드에서이를 수행하는 방법을 찾지 못하는 것 같습니다.Read-Only Word 문서 (VBA)를 편집하는 방법

문서를 편집 가능한 것으로 열거 나 문서를 열어 편집 가능한 것으로 전환하면 내 필요에 충분할 것입니다.

'readOnly = false'로 설정된 문서는 'readOnly recommended'(Document.Open에서 MS 매뉴얼 페이지를 읽었을 때)에 설정된 것처럼 보이지 않습니다.

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 오피스 배포보다 작동하도록 적은 참조 할 수 있습니다 ... – user3617389

+0

나는 권위가 아니에요 그러나 필자는 모든 Microsoft DLL이 안전하다고 믿습니다. 일부 DLL은 기본적으로로드가 더 빠르기 때문에로드되지 않습니다. 'Scripting Runtime'에는 일부 개체가 포함되어 있지 않습니다. d는 다른 VBA DLL에 대해서도 묻지 않을 것입니다. 사용자 지정 DLL을 사용할 때주의해야합니다. BTW, 나는'Scripting Runtime '에 대한 참조가 문서와 함께 저장되고 DLL 자체가 Office 설치의 일부라고 생각한다. 따라서 모든 컴퓨터에서 참조를 활성화 할 필요는 없습니다. – Variatus