Ошибка MailMerge: объект не поддерживает это свойство или метод - PullRequest
0 голосов
/ 23 января 2020

Попытка сделать слияние в Word из Word, но с ошибкой Object doesn't support this property or method. Word открывается нормально, но ни одно из полей не заполняется. Я пробовал с параметром connection и без него.

Кроме того, я подумал, что смысл параметра connection в том, что он не будет запрашивать у вас таблицу в excel для слияния?

wordFile = ThisWorkbook.Path & "\" & "uyoic" & ".docx"
excelFile = ThisWorkbook.Path & "\" & ThisWorkbook.Name

Set appWord = CreateObject("Word.Application")
appWord.Visible = True
appWord.Activate
Set wrdfile = appWord.Documents.Open(wordFile)
Application.Wait Now + TimeValue("00:00:01")

wrdfile.MailMerge.OpenDataSource Name:=excelFile ' Connection:="list"
wrdfile.Execute True

У меня есть ссылки на VBA, Excel 16 Obj, Office 16 Obj, Outlook 16 Obj, Microsoft Scripting Runtime, Word 16 Obj и VBA Extensibility 5.3. Я скучаю по одному?

1 Ответ

1 голос
/ 24 января 2020

Вам не нужны другие ссылки, потому что вы их не используете.

При использовании CreateObject вы вызываете объекты с поздним связыванием.

Некоторые предложения:

  1. Используйте Option Explicit в верхней части ваших модулей ( прочитайте это )
  2. Попробуйте назвать ваши переменные с помощью чего-то простого для понимания

Читать код комментарии и настроить его в соответствии с вашими потребностями

Option Explicit

Public Sub MailMerge()

    Dim wordApplication As Object
    Dim wordFile As Object

    Dim wordFilePath As String
    Dim excelFilePath As String

    wordFilePath = ThisWorkbook.Path & "\" & "uyoic" & ".docx"
    excelFilePath = ThisWorkbook.Path & "\" & ThisWorkbook.Name

    Set wordApplication = CreateObject("Word.Application")
    wordApplication.Visible = True
    wordApplication.Activate
    Set wordFile = wordApplication.Documents.Open(wordFilePath)
    'Application.Wait Now + TimeValue("00:00:01")

    ' This next line will ask for the source in WordApp (uncomment the SQLStatement and adjust it)
    wordFile.MailMerge.OpenDataSource Name:=excelFilePath ', SQLStatement:="SELECT *  FROM `Sheet1$`"  ' Connection:="list"
    wordFile.MailMerge.Execute True ' -> Execute method belongs to MailMerge

End Sub

Дайте мне знать, если это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...