Страницы: 1
RSS
Постраничная разбивка и сохранение при слиянии excel и word, Не получается через ActiveDocument.MailMerge.DataSource.DataFields.Value получить значение полей при процедуре слияния word и excel
 
Добрый день, уважаемые форумчане.

Пытаюсь средствами VBA управлять процессом слияния word и excel.
Штатными средствами word можно делать слияние либо по всем строкам источника данных, либо по конкретному диапазону строк. Записал макрос слияния одной строки и запустил в цикле. При этом мне не удается получить значение полей документа слияния. Всегда выдается только значение первой строки таблицы.
Пробовал в разных вариантах, потратил несколько часов в поисках, но всё тщетно - выдаются только поля первой страницы слияния, остальные не выводятся. Решил обратиться на форум. Буду признателен за подсказки.

Код:
Код
Sub my_macro()
 
For i = 1 To 2

    With ActiveDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        
        
        With .DataSource
            .FirstRecord = i
            .LastRecord = i
            lname = ActiveDocument.MailMerge.DataSource.DataFields(2).Value
            MsgBox (lname)
        
        End With
                
        .Execute Pause:=False
       
    End With
    
   Windows("my_print").Activate
    
Next i
    
End Sub
Прикладываю сам файл и источник данных.
 
Тут вопрос скорее по Word. Обсуждаем в Курилке
Согласие есть продукт при полном непротивлении сторон
 
Типовой "обман зрения".  :)
Свойство ActiveDocument "склонно к измене" при открытии нового файла.
В таком виде макрос у меня работает:
Код
Option Explicit

Sub my_macro()
  Dim i As Long
  For i = 1 To 2

    With ThisDocument.MailMerge
        .Destination = wdSendToNewDocument
        .SuppressBlankLines = True
        
        With .DataSource
            .FirstRecord = i
            .LastRecord = i
        End With
                
        .Execute Pause:=False
    End With
  Next i
End Sub
Владимир
 
Цитата
написал:
В таком виде макрос у меня работает
Владимир, спасибо большое.
Но так работает слияние, оно и в моем случае работает. Вопрос в том как значение полей источника получить для сохранения имени файла, например.
 
Давайте добавим в пример из #3 после строки 13:
Код
            .ActiveRecord = i
            MsgBox .DataFields("score").Value
Владимир
 
sokol92, Владимир, спасибо большое! Так заработало. Ура!!)
 
Рад, успехов!
Изменено: sokol92 - 26.05.2025 21:12:31
Владимир
Страницы: 1
Читают тему
Наверх