Проблема с полем Mail Merge IF и VBA - PullRequest
0 голосов
/ 27 мая 2011

У меня очень простое почтовое слияние, которое связано с базой данных SQL-сервера

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

{MERGEFIELD Dealer_Name}

, другое следующее IFполе

{IF {MERGEFIELD Dealer_Name}="Joe" "1" "0"}

Однако поле IF не выполняется.Поле слияния Dealer_Name действительно выполняется и отображает имя каждого дилера или каждую страницу, но поле IF просто отображается как Dealer_Name}=

Также возможно написать функцию или процедуру VBA и затем добавить их к слиянию слова mailдокумент в виде поля или кнопки слияния или что-то еще.

Например, допустим, у меня есть следующая процедура VBA

Public Sub PrintSomeText  
  Selection.TypeText("Hello World")
End Sub

Могу ли я добавить это к документу слияния в виде макроса или чего-то другого, чтобы на каждом из них выводился «Hello World»страница в том месте, где она была помещена в документ?

1 Ответ

0 голосов
/ 31 мая 2011

Я смог заставить работать код поля IF, не знаю как, он только начал работать.

Также я обнаружил, что вы можете использовать код VBA в документах слияния Word, используя коды полей DOCVARIABLE или REF.

Для всех, у кого есть эта проблема:

Добавьте переменную документа следующим образом:

{DOCVARIABLE MyVariable}

или ссылка на закладку, подобная этой:

{REF MyBookmarkReference}

Затем в VBA (Alt + F11) выполните следующее:

В проекте (название проекта), например Проект (MailMergeDemo) В разделе «Объекты Microsoft Word» Двойной клик «ThisDocument»

и введите следующий код

Dim WithEvents app As Application

Private Sub Document_Close()
  Set app = Nothing
End Sub

Private Sub Document_Open()
  Set app = Application
End Sub

Выберите объект приложения из раскрывающегося списка, затем выберите событие app_MailMergeBeforeRecordMerge и введите следующий код:

Private Sub app_MailMergeBeforeRecordMerge(ByVal Doc As Document, Cancel As Boolean)
  Doc.Variables("MyVariable").Value = Doc.MailMerge.DataSource.DataFields(SomeFieldName).Value

  Doc.Bookmarks("MyBookmarkReference").Range.Text = "this is a test"

  Doc.Fields.Update
End Sub

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

Пожалуйста, обратитесь к http://support.microsoft.com/kb/285333 для получения дополнительной информации.

...