액세스에서 문서를 열고 편지 병합을 실행 한 다음 VBA를 사용하여 병합 된 문서 출력을 저장하려고합니다.메일 병합 액세스 - 병합 된 문서 저장
여기 내 현재 시도 : 나는 병합 된 문서를 얻을 수
Dim templateName as String, tempRoot as String
tempRoot = "C:\report\"
templateName = tempRoot & "template.doc"
Dim objDoc As Word.Document
Dim objWord As New Word.Application
Set objDoc = objWord.Documents.Open(templateName)
objWord.Visible = True
exportData "AnnualData", tempRoot & "annualData.txt" 'Outputs query to txt file for merge
objDoc.MailMerge.OpenDataSource NAME:= _
tempRoot & "annualData.txt", ConfirmConversions:=False, ReadOnly _
:=False, LinkToSource:=True, AddToRecentFiles:=False, PasswordDocument:= _
"", PasswordTemplate:="", WritePasswordDocument:="", _
WritePasswordTemplate:="", Revert:=False, Format:=wdOpenFormatAuto, _
Connection:="", SQLStatement:="", SQLStatement1:="", SubType:= _
wdMergeSubTypeOther
objDoc.MailMerge.Execute
objDoc.Close False 'Ideally after closing, the new document becomes the active document?
ActiveDocument.SaveAs tempRoot & "testReport.doc" 'And then save?
Set objWord = Nothing
Set objDoc = Nothing
그러나, 나는 그것을 저장할 수 없습니다입니다. 문서가 열려 있지 않을 때 명령을 수행 할 수 없다는 오류가 표시됩니다.
누구나 의견을 제시 할 수 있다면 감사하겠습니다.
분명히 objWord.ActiveDocument.SaveAs? – Fionnuala
저는 도구이며, ActiveDocument가 objWord의 메서드가 될 것이라고 생각합니다 ... 다른 임의의 개체가 아닙니다. 감사합니다 – Mervyn
아마 Word에서 코드를 복사했기 때문에 그렇게 가정했습니다. 단어에서 Application은 .ActiveDocument의 기본 부모입니다. 동일한 코드를 실행할 때 objWord 객체 변수는 부모이며 Word 응용 프로그램을 나타냅니다. 따라서 접두어가 붙지 않은 Word의 모든 명령은 코드를 Access로 변환 할 때 응용 프로그램 개체의 암시 적 가능성이 높기 때문에 Word 응용 프로그램 개체를 나타내는 개체 변수로 모든 것을 선행합니다. –