表select邮件合并从Excel到Word的错误

首先在这里是我的代码。

Sub RunMerge() ' Word constants Dim wd As Object Dim wdocSource As Object Dim strWorkbookName As String On Error Resume Next Set wd = GetObject(, "Word.Application") If wd Is Nothing Then Set wd = CreateObject("Word.Application") End If On Error GoTo 0 Set wdocSource = wd.Documents.Open(ThisWorkbook.Path & "\AAFCAAC-#4077508-v1-AAFC-FFPB-COPE-SATD-_AgriInnovation_Draft_Survey_Instructions_189318.doc") strWorkbookName = ThisWorkbook.Path & "\" & "MD.xlsm" wdocSource.MailMerge.MainDocumentType = wdFormLetters wdocSource.MailMerge.OpenDataSource _ Name:=strWorkbookName, _ AddToRecentFiles:=False, _ Revert:=False, _ Format:=wdOpenFormatAuto, _ Connection:="Data Source=" & strWorkbookName, _ SQLStatement:="SELECT * FROM 'Mail Merge Data$'" With wdocSource.MailMerge .Destination = wdSendToNewDocument .SuppressBlankLines = True With .DataSource .FirstRecord = wdDefaultFirstRecord .LastRecord = wdDefaultLastRecord End With .Execute Pause:=False End With wd.Visible = True wdocSource.Close SaveChanges:=False Set wdocSource = Nothing Set wd = Nothing End Sub 

我试图从excel到word的邮件合并。 我的问题(我相信)是用SQLStatement:=“select*从”邮件合并数据$'“当我运行我的代码excel进入limbo等待单词。 当我进入我的任务pipe理器时,我发现在select一个表格时,单词是卡住的。 表select菜单中没有选项,指定的工作簿只是我的工作簿的path,并在末尾附加了.xls。 如果我删除了SQLStatement行,则会发生同样的情况,但是select表将填充工作簿中的工作表和名称范围。 我希望这是一个小错误或我的一个错字。

我认为问题是您删除了您的情况下所需的额外引号。 你的SQL语句应该看起来像这样:

 SQLStatement:="SELECT * FROM `'Mail Merge Data$'`" 

你也可以试试这个代码:

 SQLStatement:="SELECT * FROM [Mail Merge Data$]"