слияние почты в Excel VBA

У меня есть лист данных Excel и документ Word по ссылке ниже

https://www.dropbox.com/s/my62tw9jsf...32018.xls?dl=0

https://www.dropbox.com/s/h5wb91ymd3...flo1.docx?dl=0

В моем текстовом документе уже настроен макет полей слияния. Я пробовал объединить почту в Word, но, к сожалению, приложение Word "не отвечает" каждый раз, когда я пытаюсь объединить почту.

Вот это записанный макрос:

Sub Macro1()
'
' Macro1 Macro
'
'
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\[userName]\Desktop\New folder (18)\fixedcharge16032018.xls", _
        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=C:\Users\[UserName]\Desktop\New folder (18)\fixedcharge16032018.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path="""";Jet OLEDB:Engine Type=35;Je" _
        , SQLStatement:="SELECT * FROM `Sheet1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
End Sub

person rakesh seebaruth    schedule 18.03.2018    source источник
comment
Вы пробовали искать существующий код?   -  person QHarr    schedule 18.03.2018
comment
на самом деле я пробовал коды vba на stackoverflow.com/questions/1357121/ выполнение-word-mail-merge. это не работает   -  person rakesh seebaruth    schedule 18.03.2018
comment
Щелкните ссылку изменить под своим вопросом, чтобы добавить код или другую информацию к исходному вопросу. Если макрос не работает, объясните, КАК он не работает. Если есть ошибки, укажите точное сообщение об ошибке и укажите, какая строка вызывает ошибку. Вдобавок: сработало ли слияние почты, которое вы запускали при записи макроса?   -  person Cindy Meister    schedule 18.03.2018
comment
Совет по общению в StackOverflow: когда вы отвечаете кому-либо в обсуждении, укажите его имя, используя @, например: @rakeshseebaruth. Это поместит уведомление в их почтовый ящик - иначе люди не узнают, что вы им ответили.   -  person Cindy Meister    schedule 18.03.2018
comment
@rakeshseebaruth Поскольку вы новичок в StackOverflow: обратите внимание, что вы должны проголосовать (щелкните стрелку вверх) за любой вклад (вопрос или ответ), который вы сочтете полезным. И если какой-либо вклад отвечает на вопрос, который вы задаете, вы должны нажать на галочку рядом с ним. Это благодарит человека и сообщает другим, ищущим помощи с аналогичной проблемой, что это действительно ответ на вопрос.   -  person Cindy Meister    schedule 18.03.2018


Ответы (1)


Строка подключения для источника данных длиннее, чем может обработать средство записи макросов. Обратите внимание, как он очень странно обрезается:

"Provider = Microsoft.ACE.OLEDB.12.0; User ID = Admin; Data Source = C: \ Users \ [UserName] \ Desktop \ New folder (18) \ fixedcharge16032018.xls; Mode = Read; Extended Properties =" "HDR = ДА; IMEX = 1; ""; Jet OLEDB: системная база данных = "" ""; Jet OLEDB: путь к реестру = "" ""; Jet OLEDB: Engine Type = 35; Je "_

То, что он заканчивается на ;Je", ненормально. Я вижу нечто подобное, когда пытаюсь записать в Word 2016 (разница связана с длиной пути к файлу).

К счастью, вам не нужна вся информация в конце стандартной строки подключения. Его можно отредактировать / сократить до формы, с которой может работать слияние Word.

У меня сработало следующее - отключение строки подключения после IMEX=1;". Обратите внимание, что для вашей безопасности я заменил часть пути к папке, содержащую ваше имя! Вам нужно изменить это обратно на свой путь.

Sub MergeMacro
' Macro1 Macro
'
'
    ActiveDocument.MailMerge.OpenDataSource Name:= _
        "C:\Users\[userName]\Desktop\New folder (18)\fixedcharge16032018.xls", _
        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=C:\Users\[UserName]\Desktop\New folder (18)\fixedcharge16032018.xls;Mode=Read;Extended Properties=""HDR=YES;IMEX=1;", _
        SQLStatement:="SELECT * FROM `Sheet1$`", SQLStatement1:="", SubType:= _
        wdMergeSubTypeAccess
End Sub
person Cindy Meister    schedule 18.03.2018
comment
Спасибо, Синди, это работает. Когда я нажимаю на результаты предварительного просмотра, буквы отображаются при нажатии кнопки «Далее» и «Далее». Когда я нажимаю кнопку «Готово» и «объединить», слово не отвечает. ты можешь помочь. спасибо rakesh - person rakesh seebaruth; 18.03.2018
comment
@rakeshseebaruth Рад, что это помогло - пока что. Вы должны щелкнуть галочку рядом с ним, чтобы отметить его как ответ на ваш исходный вопрос. Ваша новая проблема должна быть задана на форуме, таком как SuperUser, поскольку это проблема конечного пользователя, а не программирования, насколько я могу судить. Что вы можете попробовать: сохраните и закройте документ, затем откройте его снова и посмотрите, завершит ли Word слияние. Если это не сработает, попробуйте выйти из Word, затем откройте и т. Д. ВОПРОС: Вы запускаете этот макрос из Word или из Excel (или из чего-то еще)? Если да, задайте НОВЫЙ вопрос и опубликуйте весь этот код + информацию. - person Cindy Meister; 19.03.2018