포함 된 Word 파일을 사용하여 편지 병합을 수행하는 데 문제가 있습니다. 기본적으로 나는에 매크로를 구축하기 위해 노력하고있어편집 후 포함 된 개체 닫기
:
- 열고 포함 된 Word 파일
- 단어의 헛소리로 내보내기 시트를 연결합니다 (의 파일 (2) 객체라고하자)
- 미리보기 결과
- 업데이트 목차
- 수출
- 가 완료 PD를 떠나 단어 응용 프로그램을 닫습니다 PDF로 파일
개방 F는 여기에 지금까지 개까지 해요 코드,하지만 그것은 나중에 WINWORD 응용 프로그램을 종료하지 않습니다
Public Sub fExportSVF()
Dim WdObj As Object
Dim WdApp As Word.Application
Dim WdDoc As Word.Document
Dim intIndex As Integer
Dim strPeril As String
Dim strClaimNumber As String
Dim strPHName As String
Dim strSaveLoc As String
Dim strWbName As String
Dim strTempLoc As String
Dim xlObj As Object
Application.ScreenUpdating = False
Call fUnhideSheet("EXPORT_DATA")
Application.DisplayAlerts = False
ThisWorkbook.Save
Application.DisplayAlerts = True
strTempLoc = Environ("TEMP") & Int((9999 - 1 + 1) * Rnd + 1) & ".xlsm"
strWbName = Worksheets("Settings").Range("B4").Value
strPeril = Worksheets("Settings").Range("B3").Value
strClaimNumber = Worksheets("Settings").Range("B1").Value
strPHName = Worksheets("Settings").Range("B2").Value
If Dir(strTempLoc) <> "" Then Kill strTempLoc
Set xlObj = CreateObject("Scripting.FileSystemObject")
xlObj.CopyFile ThisWorkbook.FullName, strTempLoc, True
strSaveLoc = ActiveWorkbook.Path & "\" & strClaimNumber & _
" - " & strPHName & " - " & strPeril & ".pdf"
Select Case strPeril
Case "Acc"
intIndex = 2
Case "Acci"
intIndex = 3
Case "AD"
intIndex = 4
Case "Es"
intIndex = 5
Case "Fi"
intIndex = 6
Case "Fld"
intIndex = 7
Case "Impt"
intIndex = 8
Case "St"
intIndex = 9
Case "Th"
intIndex = 10
End Select
Set WdObj = Worksheets("Settings").OLEObjects(intIndex)
WdObj.Activate
WdObj.Object.Application.Visible = False
Set WdApp = GetObject(, "Word.Application")
Set WdDoc = WdApp.ActiveDocument
WdApp.Visible = True
WdDoc.MailMerge.MainDocumentType = wdFormLetters
WdDoc.MailMerge.OpenDataSource Name:= _
strWbName _
, ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _
AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _
WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _
Format:=wdOpenFormatAuto, Connection:= _
"Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & strTempLoc & _
";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet " & _
"OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine " _
, SQLStatement:="SELECT * FROM `EXPORT_DATA$`", SQLStatement1:="", _
SubType:=wdMergeSubTypeAccess
WdDoc.MailMerge.ViewMailMergeFieldCodes = wdToggle
WdDoc.TablesOfContents(1).Update
WdDoc.ExportAsFixedFormat outputfilename:=strSaveLoc, _
ExportFormat:=wdExportFormatPDF, OpenAfterExport:=True, OptimizeFor:= _
wdExportOptimizeForPrint, Range:=wdExportAllDocument, From:=1, To:=1, _
Item:=wdExportDocumentContent, IncludeDocProps:=True, KeepIRM:=True, _
CreateBookmarks:=wdExportCreateNoBookmarks, DocStructureTags:=True, _
BitmapMissingFonts:=True, UseISO19005_1:=False
WdApp.ActiveDocument.Close wdDoNotSaveChanges
Set WdApp = Nothing
Set WdObj = Nothing
Kill strTempLoc
Call fHideSheet("EXPORT_DATA")
Application.ScreenUpdating = True
End Sub
는 그래서 떨어져 WINWORD 응용 프로그램 가까이에서 모든 작업을 수행합니다. 그 외에도, 이미 열려있는 다른 문서가 있다면 보이지 않게 만들 것입니다.
도움이 필요하십니까?
건배
편집 : 또한,이 코드가 실행됩니다 기계가 그들에게 말씀 97 및 Word 2007을 둘 것입니다. 이것에
Set WdApp = GetObject(, "Word.Application")
이하는을 생성하는 :이 문서는 (있는 경우, 말씀의 기존 인스턴스에 WdApp를 설정) 2007 년 감사