J'ai essayé ma macro pour la tester, mais quelque chose ne fonctionne pas. J'ai essayé d'enregistrer une macro et j'ai comparé le code au mien. La macro enregistrée a fonctionné. Mais dès que j'ai commencé à le modifier, il ne se passerait rien si je cours la Macro.(MS Word/VBA) Exécution de la fusion et du publipostage à l'ouverture du document
J'ai mot bibliothèque d'objets
Travailler Macro:
Sub DistrictMailMerge()
On Error GoTo NoKTOAccess
ActiveDocument.MailMerge.Destination = wdSendToNewDocument
RunMMKTO
Exit Sub
NoKTOAccess:
If Err.Number = 5174 Then
RunMMPEO
End If
End Sub
Sub RunMMKTO()
'Wrong Filename for testing purpose'
'-----------------------------------
ActiveDocument.MailMerge.OpenDataSource _
Name:="\\Astc-ls-001\new_admin\File Sharing\001. KLN 1\Caseworkers\Herman\Masterlist One-Stop Portal.xlsm2", _
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=\\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
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
End Sub
Sub RunMMPEO()
ActiveDocument.MailMerge.OpenDataSource Name:= _
"\\192.168.9.190\new_admin\File Sharing\Caseworkers\Herman\ISS OSP\Masterlist One-Stop Portal.xlsm" _
, 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=\\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
ActiveDocument.MailMerge.ViewMailMergeFieldCodes = wdToggle
End Sub
Macro qui ne fait rien (erreur très rarement comme indiqué ci-dessous):
Erreur d'erreur d'exécution '5852': L'objet demandé n'est pas disponible
Sub DistrictMailMerge()
On Error GoTo NoKTOAccess
ActiveDocument.MailMerge.Destination = wdSendToNewDocument
RunMMKTO
Exit Sub
NoKTOAccess:
If Err.Number = 5174 Then
RunMMPEO
End If
End Sub
Sub RunMMKTO()
'Wrong Filename for testing purpose'
'-----------------------------------
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.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
.Execute
End With
End Sub
Sub RunMMPEO()
With ActiveDocument.MailMerge
.Destination = wdSendToNewDocument
.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
.Execute
End With
End Sub
En fait, je fait quelques changements moi-même après et je créé une autre question Le publipostage fonctionne, si je l'appelle la macro manuellement à partir de l'onglet développeurs dans le document Word ouvert Mais je ne sais pas comment exécutez-le à partir d'Excel [Voici le lien vers la question] (https://stackoverflow.com/questions/45207127/running-mail-merge-from-excel-on-an-embedded-docx-word-file) – herman925
Je suis content que vous progressiez. Le problème que vous décrivez dans votre nouvelle question n'est pas celui que vous décrivez dans votre commentaire ci-dessus. Il semble que vous souhaitiez commencer à travailler dans Excel. Pour ouvrir un document Word et le manipuler depuis Excel, vous devez créer une instance de l'application Word. Ce n'est pas difficile. Google pour quelque chose comme "appeler Word d'Excel" et vous trouverez beaucoup de code. – Variatus
N'oubliez pas que vous utilisez 2 DLL. Par conséquent, lorsque vous déclarez des variables, vous devez spécifier s'il s'agit de Word ou d'Excel. Si vous ne déclarez pas qu'Excel supposera qu'ils sont Excel, votre code Word ne sera pas exécuté. – Variatus