Выполнение Word Mail Merge

У меня есть лист Excel с данными, и я хочу экспортировать его в новый документ Word. Можно ли начатьMAIL MERGE из макроса Excel, нажав кнопку на листе?

Ответы на вопрос(5)

ой полей слияния, это становится намного проще. В приведенном ниже примереMailMergeLayout.doc все настройки готовы к выполнению слияния. Кнопка в Excel связана сRunMailMerge () как ниже. Весь код содержится в модуле Excel VBA.

Sub RunMailMerge()

    Dim wdOutputName, wdInputName As String
    wdOutputName = ThisWorkbook.Path & "\Reminder Letters " & Format(Date, "d mmm yyyy")
    wdInputName = ThisWorkbook.Path & "\MailMergeLayout.doc"

    ' open the mail merge layout file
    Dim wdDoc As Object
    Set wdDoc = GetObject(wdInputName, "Word.document")
    wdDoc.Application.Visible = True

    With wdDoc.MailMerge
         .MainDocumentType = wdFormLetters
         .Destination = wdSendToNewDocument
         .SuppressBlankLines = True
         .Execute Pause:=False
    End With

    ' show and save output file
    wdDoc.Application.Visible = True
    wdDoc.Application.ActiveDocument.SaveAs wdOutputName

    ' cleanup
    wdDoc.Close SaveChanges:=False
    Set wdDoc = Nothing

End Sub
Private Sub CommandButton1_Click()

 Set wordapp = CreateObject("word.Application")

     wordapp.documents.Open "C:\Documents and Settings\User\Desktop\mergeletter.doc"


    wordapp.Visible = True

    wrddoc = wordapp.documents("C:\Users\User\Desktop\sourceofletters.xls")


   wrddoc.mailmerge.maindocumenttype = wdformletters

   With wrddoc.activedocument.mailmerge

 .OpenDataSource Name:="C:\Users\User\Desktop\sourceofletters.xls", _
           SQLStatement:="SELECT * FROM `Sheet1`"



   End With

End Sub

й и кодами слияния все настройки) все, что я хочу, это для окна сообщения"Opening the document will run the following SQL command " чтобы сделать его доступным для пользователя, с этого момента пользователь может выбрать'Yes' или же .'No'

Решение Вопроса

и вы запускаете макрос из рабочей книги, содержащей данные, которые вы хотите объединить в документ Word, попробуйте следующее:

Sub RunMerge()

    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("c:\test\WordMerge.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 `Sheet1

и вы запускаете макрос из рабочей книги, содержащей данные, которые вы хотите объединить в документ Word, попробуйте следующее:

" 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
Dim opt As String
opt = MessageBox("Opening the document will run the following SQL command", vbYesNo)
If opt = vbYes Then
   'execute query
End If
 robnick28 февр. 2017 г., 01:28
Это даже отдаленно не близко к решению вопроса.

мне пришлось объявить константы Word в Excel VBA следующим образом:

' Word constants
Const wdFormLetters = 0, wdOpenFormatAuto = 0
Const wdSendToNewDocument = 0, wdDefaultFirstRecord = 1, wdDefaultLastRecord = -16
 dendarii27 февр. 2013 г., 10:53
Хороший вопрос, МэттМ. Если вы нев Excel VBA не должно быть ссылки на объект Word (в Редакторе VBA, Инструменты> Отзывы> Microsoft Word [version] Object Library), константы Word не будут работать, и вам придется использовать MattM 'вместо значений.

Ваш ответ на вопрос