2013-04-10 3 views
3

열려있는 문서의 속성 필드를 같은 폴더의 모든 .doc에 적용하는 Word 2003 매크로가 있습니다. 이 코드는 한 번 작동합니다. 폴더를 만들면 해당 폴더에 세 개의 새 문서를 만들고 문서를 열고 매크로를 실행하면됩니다. 해당 폴더에서 문서를 열고 매크로를 다시 실행하면 매크로를 실행 한 활성 문서의 속성 만 변경됩니다.Word BuiltInDocumentProperties가 변경되지 않습니다.

매크로는 기본 서식 파일의 모듈에 있습니다.

코드 :

title = ActiveDocument.BuiltInDocumentProperties("Title") 
subject = ActiveDocument.BuiltInDocumentProperties("Subject") 
author = ActiveDocument.BuiltInDocumentProperties("Author") 
manager = ActiveDocument.BuiltInDocumentProperties("Manager") 
company = ActiveDocument.BuiltInDocumentProperties("Company") 
category = ActiveDocument.BuiltInDocumentProperties("Category") 
keywords = ActiveDocument.BuiltInDocumentProperties("Keywords") 
comments = ActiveDocument.BuiltInDocumentProperties("Comments") 

fileDirectory = ActiveDocument.Path 

vFile = Dir(fileDirectory & "\*.doc") 

Do While vFile <> "" 
    Set wordDoc = Documents.Open(fileDirectory & "\" & vFile) 
    With wordDoc 
     .BuiltInDocumentProperties("Title") = title 
     .BuiltInDocumentProperties("Subject") = subject 
     .BuiltInDocumentProperties("Author") = author 
     .BuiltInDocumentProperties("Manager") = manager 
     .BuiltInDocumentProperties("Company") = company 
     .BuiltInDocumentProperties("Category") = category 
     .BuiltInDocumentProperties("Keywords") = keywords 
     .BuiltInDocumentProperties("Comments") = comments 
     .Save 
     .Close 
    End With 
    vFile = Dir 
Loop 

는 나는 내가 열거 나 파일을 저장하고있어 방식에 무언가가 있는지 확실하지 않습니다. 적어도 그것이 전혀 작동하지 않는다면 코드가 잘못되었다는 것을 알게 될 것입니다. 그러나 적어도 한 번은 새로운 문서에서 작동하기 때문에 ... 전혀 모르겠습니다.

미리 감사드립니다.

+0

실행하는 코드에는 이상한 것이 없습니다. 첫 번째 줄을 발표하기 전에 어떤 것이 있습니까? –

+0

변수 선언과 속성 창 호출. – Natzely

답변

9

좋아요, 지금 작동하고 있습니다. Word가 을 사용할 때 변경 사항을 저장하지 않고 VBA를 통해 속성을 변경하면 .Saved을 false로 설정하는 데 중요한 변경 사항으로 간주되지 않는 것으로 보입니다. 어쩌면 .SaveAs 여전히 작동합니다. 어쨌든 .Save 전에 .Saved = False을 추가했는데 이제는 정상적으로 작동합니다.

누가 어느 시점에서 똑같은 것을 숙고할지 모르는 사람을 알리고 싶었습니다. 이것은 파일이 항상 저장되는지 확인하는 적절한 방법 일 수 있습니다.

+2

잘 알고 있습니다! +1 당신을 위해 ... –

+1

그래, 그건 '잘 알고있어!'. 아니면 'Gotcha!' - MS-Excel 2010에서이 동작을 확인했습니다. Excel VBA 개발자는 Built-In 문서 속성과 사용자 지정 문서 속성을 변경할 때 ThisWorkbook.Saved = False를 적용해야합니다. –

관련 문제