Форум программистов, компьютерный форум, киберфорум
MS Office Word
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 26.05.2020
Сообщений: 6
1

Макрос на слияние word 2019

17.06.2020, 15:35. Просмотров 828. Ответов 6

Добрый день. Вот макрос.
Что он делает. Сохраняет документы из слияния, давая названия из поля слияния. И сохраняет всё в PDF.
Что не делает: когда слияние выбирается отдельно, выбирается экспорт в ПДФ, сохраняется и новый документ закрывается. И вот тут проблемы. Ворд предлагает сохранить новый документ (новый он потому что из файла слияния генерируется готовое "пиьсмо") ещё где нибудь в docx (а мне копии в PDF хватает)
Что надо сделать: нажать нет
На текущий момент я как мартышка кликаю истерично на мышку, и срабатывает. Но кликать 265 раз было.. мерзко.
Сам пробовал сделать запись макроса, но нажатие "нет" - не фиксируется.
Строчка закрытия диалогового окна должна появиться после строчки .Close
Всем спасибо.
PS Непонятные знаки - это текст на русском. Описание макроса, адрес сохранения и названия поля, которые идут в название. С этим проблем нет.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub Merge1()
'
' Merge1 Ìàêðîñ
'
'
Dim i As Long
    Dim oMerge As MailMerge
    Dim oData As MailMergeDataSource
    
    Set oMerge = ActiveDocument.MailMerge
    Set oData = oMerge.DataSource
    
    Application.ScreenUpdating = False
    For i = 1 To oData.RecordCount
        With oData
            .FirstRecord = i
            .LastRecord = i
            .ActiveRecord = i
        End With
        With oMerge
            .Destination = wdSendToNewDocument
            .Execute Pause:=False
        End With
    With ActiveDocument
        .ExportAsFixedFormat OutputFileName:= _
        "F:\Ðàáîòà\Íàãðàæäåíèå 2020\" & oData.DataFields("Íàçâàíèåäîêóìåíòà").Value, ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
        wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
        IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
        wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
        True, UseISO19005_1:=False
        .Close
        End With
    Next i
    Set oData = Nothing
    Set oMerge = Nothing
    Application.ScreenUpdating = True
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.06.2020, 15:35
Ответы с готовыми решениями:

Слияние с Word
Есть такая проблемма, Аксессе сделана собственная функция при слиянии Word ругаеться что не...

Слияние в ТП Word
Подготовить и оформить средствами Word серию рассылок квитанций об оплате ремонта по данным...

Слияние с word
Добрый день. Прошу помощи. Есть запрос, который собирает данные для документа из разных таблиц....

Слияние в Word
Добрый день! Создаю серию писем. Создал базу данных в axsess Далее с помощью слияния установил...

6
Модератор
Эксперт MS Access
9827 / 3867 / 624
Регистрация: 07.08.2010
Сообщений: 10,969
Записей в блоге: 2
17.06.2020, 17:00 2
Цитата Сообщение от Dzhal89 Посмотреть сообщение
Непонятные знаки - это текст на русском.
перед копированием кода для форума надо переключиться на русскую клавиатуру
0
0 / 0 / 0
Регистрация: 26.05.2020
Сообщений: 6
17.06.2020, 17:31  [ТС] 3
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Sub Merge1()
'
' Merge1 Макрос
'
'
Dim i As Long
    Dim oMerge As MailMerge
    Dim oData As MailMergeDataSource
    
    Set oMerge = ActiveDocument.MailMerge
    Set oData = oMerge.DataSource
    
    Application.ScreenUpdating = False
    For i = 1 To oData.RecordCount
        With oData
            .FirstRecord = i
            .LastRecord = i
            .ActiveRecord = i
        End With
        With oMerge
            .Destination = wdSendToNewDocument
            .Execute Pause:=False
        End With
    With ActiveDocument
        .ExportAsFixedFormat OutputFileName:= _
        "F:\Работа\Награждение 2020\" & oData.DataFields("Названиедокумента").Value, ExportFormat:=wdExportFormatPDF, _
        OpenAfterExport:=False, OptimizeFor:=wdExportOptimizeForPrint, Range:= _
        wdExportAllDocument, From:=1, To:=1, Item:=wdExportDocumentContent, _
        IncludeDocProps:=True, KeepIRM:=True, CreateBookmarks:= _
        wdExportCreateNoBookmarks, DocStructureTags:=True, BitmapMissingFonts:= _
        True, UseISO19005_1:=False
        .Close
        End With
    Next i
    Set oData = Nothing
    Set oMerge = Nothing
    Application.ScreenUpdating = True
End Sub
0
7723 / 4178 / 1660
Регистрация: 11.02.2013
Сообщений: 8,943
17.06.2020, 20:25 4
Цитата Сообщение от Dzhal89 Посмотреть сообщение
Непонятные знаки - это текст на русском
Включайте русскую раскладку перед копированием в буфер

Чтобы не просил сохранить, нужно вызвать Close с параметром (32 строка):
Visual Basic
1
.Close False
0
0 / 0 / 0
Регистрация: 26.05.2020
Сообщений: 6
17.06.2020, 20:37  [ТС] 5
А по делу есть ответы?
0
7723 / 4178 / 1660
Регистрация: 11.02.2013
Сообщений: 8,943
17.06.2020, 20:42 6
Лучший ответ Сообщение было отмечено Dzhal89 как решение

Решение

Dzhal89, я же ответил. Чтобы ворд не предлагал сохранить, нужно вызывать метод Close с параметром False
https://docs.microsoft.com/en-... ose(method)
1
0 / 0 / 0
Регистрация: 26.05.2020
Сообщений: 6
17.06.2020, 20:54  [ТС] 7
Сейчас попробую. Второе замечание на одну и ту же тему затмило разум.

Добавлено через 9 минут
Супер. Ровно то, что надо) Спасибо большое. ТАкие макросы спасут не одну мышку.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.06.2020, 20:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Макрос Word 2016 замена шрифта рандомных символов на выбранный - MS Word
Есть обычный текст, только буквы и цифры Нужно, чтобы после обработки макроса выбирались случайные...

Слияние Word 2010
Как организовать слияние Word-таблицу с группировкой по разделам (см. вложения)? Источник...

Слияние Access и Word
Добрый день. Есть форма в access "оформление заказа". Она построена на основе таблицы....

Слияние с БД (поле Word IF…THEN…ELSE)
Добрый вечер! Буду рада любому совету. Необходимо, используя поле Word IF…THEN…ELSE, вставьте ...

Слияние Word Exel
Добрый день. Есть задача - в шаблонный документ брать данные из таблицы. При этом, к данным из...

Слияние Word и Excel
Добрый день. Как связать комбобоксы? То есть есть 2 комбобокса, один из них заполнен списком...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.