显示一个列表以选择word文档,然后宏会将excel中的信息合并到word中
这是我要与word合并的宏。 我意识到我需要做更多的事情,在那里我会得到一个提示,提示我从一系列可用的word文档中选择要合并的工作表(xx1、xx2…xx7)。共有6个word文档,其中2个我需要另一个常用word文档才能打开(xx7)。当我选择word文档xx3或xx6时,我需要打开2个word文档。如果我选择了xx3 word文档,它将打开xx3和xx7;如果我选择了xx6 word文档,它将打开xx6和xx7。同时,xx1、xx2、xx4、xx5将打开一个word文档。 我不想用另一个单词document name重复这个宏7次。我有没有可能在一个宏中涵盖这一点?多谢各位显示一个列表以选择word文档,然后宏会将excel中的信息合并到word中,excel,vba,Excel,Vba,这是我要与word合并的宏。 我意识到我需要做更多的事情,在那里我会得到一个提示,提示我从一系列可用的word文档中选择要合并的工作表(xx1、xx2…xx7)。共有6个word文档,其中2个我需要另一个常用word文档才能打开(xx7)。当我选择word文档xx3或xx6时,我需要打开2个word文档。如果我选择了xx3 word文档,它将打开xx3和xx7;如果我选择了xx6 word文档,它将打开xx6和xx7。同时,xx1、xx2、xx4、xx5将打开一个word文档。 我不想用另一个单
Sub RunMergeAttachBOccupantProtection()
Const wdFormLetters = 0
wdOpenFormatAuto = 0
Const wdSendToNewDocument = 0
wdDefaultFirstRecord = 1
wdDefaultLastRecord = -16
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("R:\Grants\AttachmentBOccupantProtection.docx")
strWorkbookName = ThisWorkbook.Path & "\" & ThisWorkbook.Name
wdocSource.MailMerge.MainDocumentType = wdFormLetters
wdocSource.MailMerge.OpenDataSource _
Name:=strWorkbookName, _
AddToRecentFiles:=False, _
Revert:=False, _
Format:=wdOpenFormatAuto, _
Connection:="Data Source=" & strWorkbookName & ";Mode=Read", _
sqlstatement:="SELECT * FROM [" & ActiveSheet.Name & "$]"
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
修改您的过程以接受要打开的文档的名称,然后为每个需要打开的文档调用该名称一次。与此类似:
Sub RunMergeAttachBOccupantProtection(DocName as String)
.
.
.
Set wdocSource = wd.Documents.open("R:\Grants\" & DocName & ".docx")
.
.
.
End Sub
然后,您可以使用以下内容运行快速测试:
Sub TestDriver()
Dim MyDoc as String
MyDoc = "XX1"
if MyDoc = "xx3" or MyDoc = "xx6" then
RunMergeAttachBOccupantProtection("xx3")
RunMergeAttachBOccupantProtection(MyDoc)
Else
RunMergeAttachBOccupantProtection(MyDoc)
End If
End Sub
但是,如何获得可以从中选择的文档列表,然后宏打开该特定选项,如果是xx3或xx6,则打开xx3和xx7或xx6和xx7?