2017-10-04 10 views
0

現在、差し込み印刷を作成したExcelスプレッドシートで作業していますが、差し込み印刷を開始しても差し支えなく、差し込み印刷をコンポーネントファイルに分割しています。VBA新しい差し込み印刷ドキュメントの参照

私は、差し込み印刷後、wdApplicationフォーカスが元の単語文書に戻り、メールをアクティブな文書にマージする方法や、変数を設定する方法がわかりません私はそこでそれを操作することができるように新しい差し込みです。

Dim wdApp As New Word.Application, wdDoc As Word.Document 
Dim strWorkbookName As String: strWorkbookName = ThisWorkbook.FullName 
Dim sections As Integer 
Dim fileName As String 

With wdApp 
    .DisplayAlerts = wdAlertsNone 

    Set wdDoc = .Documents.Open(ThisWorkbook.Path & "\Potential Template.docx", ConfirmConversions:=False, ReadOnly:=True, AddToRecentFiles:=False) 

    With wdDoc 
     With .MailMerge 
      .MainDocumentType = wdFormLetters 
      .Destination = wdSendToNewDocument 
      .SuppressBlankLines = True 
      .OpenDataSource Name:=strWorkbookName, ReadOnly:=True, _ 
       LinkToSource:=False, AddToRecentFiles:=False, _ 
       Format:=wdOpenFormatAuto, _ 
       Connection:="Provider=Microsoft.ACE.OLEDB.12.0;Data Source=strWorkbookName;" & _ 
       "Mode=Read;Extended Properties=""HDR=YES;IMEX=1"";", _ 
       SQLStatement:="SELECT * FROM `'Final Data Set$'`", _ 
       SubType:=wdMergeSubTypeAccess 
      With .DataSource 
       .FirstRecord = wdDefaultFirstRecord 
       .LastRecord = wdDefaultLastRecord 
      End With 
      .Execute 
      .MainDocumentType = wdNotAMergeDocument 
     End With 
     .Close SaveChanges:=wdDoNotSaveChanges 

    End With 

    .Browser.Target = wdBrowseSection 
    For i = 1 To ((ActiveDocument.sections.Count) - 1) 
     ActiveDocument.Bookmarks("\Section").Range.Copy 

     Documents.Add 
     Selection.Paste 

     Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend 
     Selection.Delete Unit:=wdCharacter, Count:=1 
     fileName = filePath & Worksheets("Final Data Set").Range(Cells(i + 1, 4)).value 
     ActiveDocument.SaveAs (fileName) 
     ActiveDocument.Close 

     .Browser.Next 
    Next i 




    .DisplayAlerts = wdAlertsAll 
    .Visible = True 
    .Quit SaveChanges:=wdDoNotSaveChanges 
End With 

答えて

0

あなたがWord文書のMailMergeAfterMergeイベントを検討する必要があります。

は、ここに私の現在のコードです。

ただし、イベントを処理できるようにするには、ドキュメントレベルでPrivate WithEvents wdDoc As Word.Documentとドキュメントを宣言する必要があります。

Private Sub wdDoc_MailMergeAfterMerge(Doc As Document, DocResult As Document) 
End Sub 

差し込み印刷のすべてのレコードが正常にマージされた後に発生します。

Name  Data-Type Description 

Doc  Document The mail merge main document. 
DocResult Document The document created from the mail merge 


WithEventsは、標準モジュールで宣言することはできません。

関連する問題