(MS Word/VBA)打开文档时执行邮件合并
我一直在尝试我的宏进行测试,但不知为什么有些东西不起作用。我试着录制一个宏,并将代码与我的进行了比较。录制的宏工作正常。但一旦我开始修改它,如果我运行宏,就不会发生任何事情 我有Word对象库 工作宏:(MS Word/VBA)打开文档时执行邮件合并,vba,ms-word,Vba,Ms Word,我一直在尝试我的宏进行测试,但不知为什么有些东西不起作用。我试着录制一个宏,并将代码与我的进行了比较。录制的宏工作正常。但一旦我开始修改它,如果我运行宏,就不会发生任何事情 我有Word对象库 工作宏: Sub DistrictMailMerge() On Error GoTo NoKTOAccess ActiveDocument.MailMerge.Destination = wdSendToNewDocument RunMMKTO Exit Sub NoKTOAccess: If
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
不执行任何操作的宏(很少出现如下所示的错误):
运行时错误“5852”的错误:请求的对象不可用
有两种可能的方法解决您的问题
发行版mailmerge
的实际功能。在其第一行中放置断点,然后按F5。当它到达停止点时,继续按F8并观察它实际执行的部分ActiveDocument.MailMerge.Destination=wdsendtoneewdocument
很感兴趣,它似乎只指定要将合并发送到文档,而没有指定哪个文档,也没有指定如何合并。MS建议的代码解决了这个问题。
在没有进一步研究的情况下,我发现了一个问题:为什么你的两个版本中的一个实际上比另一个更有效,为什么另一个没有事实上,在那之后,我自己做了一些更改,并创建了另一个问题邮件合并是否有效,如果我从打开的Word文档的“开发人员”选项卡手动调用宏,但我不知道如何从Excel执行宏,我很高兴您取得了进展。你在新问题中描述的问题不是你在上述评论中描述的问题。似乎您希望开始使用Excel。为了打开Word文档并从Excel中对其进行操作,您需要创建Word应用程序的实例。这并不难。在谷歌上搜索“从Excel调用Word”之类的东西,你会发现很多代码。请记住,你使用的是2个DLL。因此,当您声明变量时,您应该指定它们是Word的还是Excel的。如果您不声明Excel将假定它们是Excel的,那么您的Word代码将无法运行。非常感谢。在我提出另一个问题之前,我会再挖掘一下
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