Страницы: 1
RSS
Слияние WORD+EXCEL, как в макросе (VBA) использовать фильтр в режиме завершения
 
Добрый день!  Создала в Word документ ("Заявление.doc) c использованием данных из таблицы Excel  в режиме слияния. Следующий шаг - макросом каждый полученный документ сохранила в отдельном файле. Все работает, если в режиме слияния обрабатываются ВСЕ строки таблицы - на каждого человека, указанного в таблице с исходными данными формируется "именное" заявление (это сделано для уменьшения объема работы пользователям и снижения кол-ва ошибок).
Вопрос знатокам- как установить в макросе фильтр, чтобы в цикле проходить только записи, отмеченные V (режим "изменить список получателей")?  
 
Цитата
Luna2903 написал:
Вопрос знатокам- как установить в макросе фильтр, чтобы в цикле проходить только записи, отмеченные V (режим "изменить список получателей")?  
а может сделать фильтр встроенными средствами слияния?
По вопросам из тем форума, личку не читаю.
 
Да, встроенными получается. В результате все сформированные документы  формируются в один файл, а мне хотелось бы сформировать "именные" файлы. Если запускаю макрос,  то этот фильтр  не виден.

Макрос, который получился - ниже.
Изменено: Luna2903 - 27.04.2020 14:23:06
 
Код
Sub delenie_na_fio()

    Dim imf_save As String
    Dim pole_otd As Integer
    Dim put_fl As String
               
put_fl = "D:\Work\Заявления\"
                n = 0
                
On Error Resume Next
  ActiveDocument.MailMerge.DataSource.ActiveRecord = wdFirstRecord
  Do
    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        With .DataSource
            .FirstRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
            .LastRecord = ActiveDocument.MailMerge.DataSource.ActiveRecord
        
        pole_fam = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
        pole_otd = ActiveDocument.MailMerge.DataSource.DataFields(3).Value
        pole = pole_otd & " " & pole_fam

        Application.StatusBar = pole
            imf_save = put_fl & pole & " заявление.doc"

        End With
        .Execute Pause:=False
    
    End With
    
    ActiveDocument.SaveAs FileName:= _
        imf_save, FileFormat:= _
        wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
        True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
        False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
        SaveAsAOCELetter:=False
    ActiveDocument.Close
    ActiveDocument.MailMerge.DataSource.ActiveRecord = wdNextRecord

                n = n + 1
       Loop Until n = ActiveDocument.MailMerge.DataSource.RecordCount

End Sub
Изменено: Luna2903 - 27.04.2020 14:49:04
 
Luna2903, Сегодня прям фестиваль :)
Код
Sub МакросОтветаНаВопрос()
With CreateObject("WScript.Shell")
 .Run "https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=45586&TITLE_SEO=45586-pravila-foruma"
End With
End Sub
 
Объясните, пожалуйста, что я не так сформулировала/написала. Какие правила форума нарушила?
 
Luna2903, оформите код, как это делают другие.
 
А название темы не нужно уточнить? Предложите новое, модераторы заменят
 
Тему обозначила, как я ее вижу. Если Вы считаете по-другому, подскажите. Сама изменить формулировку затрудняюсь.
 
Цитата
Luna2903 написал:
изменить формулировку затрудняюсь.
Вы не знаете, в чём заключается Ваша задача?
 
Мне кажется, что я описАла задачу и проблему с которой встретилась достаточно подробно. И не понимаю, что я должна переформулировать.
У каждого свое видение. Подскажите  как, на Ваш взгляд, будет правильно.  
Изменено: Luna2903 - 28.04.2020 14:51:04
 
Чисто для примера,: "Как при слиянии в Word  исключить строки с нулевыми значениями?"
Из такого названия понятна задача? А из Вашего?
P.S. Просто предложите адекватное название и не пытайтесь втянуть меня в бесполезную переписку.
 
Luna2903,
1. Судя по тому что вы хотите на выходе, раз  вам нужен именной файл, слияние то вам скорее вредит, и управлять им только сложнее. закладки в помощь и все получится
2. Что вам надо , то кратко и укажите для темы.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх