2017-11-30 8 views
1

VBA를 사용하여 Access에서 제공 한 데이터를 사용하여 Word에서 레이블 폼을 만들려고합니다. 이 VBA 코드는 작동 :VBA를 사용하여 Word 레이블 시트 만들기, 추가 원치 않는 문서 받기

Dim appwd As Object 
Dim oDoc As Object 

Set appwd = CreateObject("Word.Application") 
With appwd 
    .Documents.Add 
    Set oDoc = .MailingLabel.CreateNewDocumentByID(LabelID:="1359804671") 
    .Visible = True 
    .Activate 
End With 

oDoc.Activate 

'Remaining code that creates labels 

그러나, 그것은 생성하고 빈 문서 1뿐만 아니라 내가 원하는 라벨 2의 문서를 엽니 다. 불필요한 Document1을 만들지 못하게하거나 최소한 저장하지 않고 문서를 다시 닫지 않으려면 어떻게해야합니까? 나는 .Documents.Add을 주석 경우

은, 그때

런타임 오류 '4605'얻을 : 문서 창이 활성화되어 있기 때문에

이 메서드 나 속성을 사용할 수 없습니다. 가장 좋은 대안은 그냥 빨리 만들 때 해당 문서를 닫습니다 그래서

+0

.Documents.Add에 보인다 새로운 빈 문서를 만드는 중입니다. 해당 코드 제거를 시도 했습니까? – mooseman

+0

음, .Documents.Add는 새 문서를 추가하는 경향이 있습니다. 실제로 코드를 수정할 수 있도록 전체 코드를 제공하십시오 (문서를 여는 코드가 없습니다) –

+0

oDoc 대신 appwd에서 MailingLabel 객체를 가져온다면 어떻게 될까요? https://msdn.microsoft.com/en-us/vba/word-vba/articles/mailinglabel-object-word는 그렇게 할 수 있다고 말합니다. – Duston

답변

2

는 불행하게도, .MailingLabel 객체가 열려 있어야 문서를 필요로 당신을 원하는 :

Dim appwd As Object 
Dim oDoc As Object 
Set appwd = CreateObject("Word.Application") 
With appwd 
    .Documents.Add 
    Set oDoc = .MailingLabel.CreateNewDocumentByID(LabelID:="1359804671") 
    .Documents(1).Close SaveChanges:=0 'wdDoNotSaveChanges, close the first document 
    .Visible = True 
    .Activate 
End With 

oDoc.Activate