Esecuzione di unione di posta da Excel su un file Embedded .docx (Word)

Aiutaci a scoprirlo quando sono bloccato all'ultima fase cercando di definire correttamente le mie variables nel seguente codice.

Voglio eseguire quanto segue in sequenza:

  1. Fai clic sul button 'CommandButton1'
  2. Si apre poi il module denominato "CR_MMFormTest", che è un documento incorporato, (i campi di fusione già completati senza l'origine dati indicata in questo momento)
  3. VBA mi aiuta a creare una replica del module e utilizzarlo per ….
  4. Chiamare la function DistrictMailMerge

Il problema, che ho incontrato, è il 3 e il 4.

  1. Lo script di replica non funziona per un documento incorporato. Direi

Errore di run-time '5174': Siamo spiacenti, non abbiamo trovato il file. È stato spostato, rinominato o cancellato?

  1. Non riesco a utilizzare la function DistrictMailMerge per riconoscere che la function dovrebbe funzionare sul documento aperto

Quello che ho provato: ho pensato a creare l'evento Document Open per i miei documenti incorporati, ma non functionrebbe. I documenti si aprono solo come documento temporaneo e gli script non salveranno. Quindi non posso solo eseguire la function DistrictMailMerge durante l'evento aperto senza utilizzare Excel per farlo invece.

Credo che la questione sia sulla natura di questi documenti aperti. In realtà non esistono in un modo che un normale documento di Word avrebbe fatto. Mi chiedo se qualcuno mi possa aiutare per favore.

Questa è la subroutine:

Private Sub CommandButton1_Click() Sheets("Resource Bank").Select ActiveSheet.Shapes("CR_MMFormTest").Select Selection.Verb xlVerbOpen Call DistrictMailMerge End Sub 

Questa è la function che ho inteso per il documento aperto per call:

 Function DistrictMailMerge() Application.ScreenUpdating = False On Error GoTo NoKTOAccess Application.Documents.Add ActiveDocument.FullName Close_All_Except_Active_Document RunMMKTO Exit Function NoKTOAccess: If Err.Number = 5174 Then RunMMPEO End If Application.ScreenUpdating = True End Function Sub Close_All_Except_Active_Document() Dim i As Integer Dim KeepOpen As String KeepOpen = ActiveDocument.Name For i = Documents.Count To 1 Step -1 If Documents(i).Name <> KeepOpen Then Documents(i).Close Savechanges:=wdDoNotSaveChanges Next i End Sub Sub RunMMKTO() With ActiveDocument.MailMerge .OpenDataSource _ Name:="\\Astc-ls-001\new_admin\File Sharing\001. KLN 1\Caseworkers\Herman\Masterlist One-Stop Portal.xlsm", _ Format:=wdOpenFormatAuto, _ Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=\\Astc-ls-001\new_admin\File Sharing\001. KLN 1\Caseworkers\Herman\Masterlist One-Stop Portal.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry ", _ SQLStatement:="SELECT * FROM [CR Step 2 - Mail Merge List$] WHERE [ISS No#] LIKE '%-%'", _ SQLStatement1:="", SubType:=wdMergeSubTypeAccess .ViewMailMergeFieldCodes = wdToggle End With End Sub Sub RunMMPEO() With ActiveDocument.MailMerge .OpenDataSource _ Name:="\\192.168.9.190\new_admin\File Sharing\Caseworkers\Herman\ISS OSP\Masterlist One-Stop Portal.xlsm", _ Format:=wdOpenFormatAuto, _ Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=\\Astc-ls-001\new_admin\File Sharing\001. KLN 1\Caseworkers\Herman\Masterlist One-Stop Portal.xlsm;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry ", _ SQLStatement:="SELECT * FROM [CR Step 2 - Mail Merge List$] WHERE [ISS No#] LIKE '%-%'", _ SQLStatement1:="", SubType:=wdMergeSubTypeAccess .ViewMailMergeFieldCodes = wdToggle End With End Sub