Classe MappedDataField (Word VBA)

Um campo de dados mapeado é um campo contido no Microsoft Word que representa as informações de nome ou endereço comumente usadas, como "First Name". Se uma fonte de dados contiver um campo "First Name" ou uma variação dele (por exemplo, "First_Name," "FirstName," "First" ou "FName"), o campo na fonte de dados será mapeado automaticamente para o campo de dados mapeado correspondente no Word. Se for necessário mesclar um documento ou um modelo com mais de uma fonte de dados, os campos de dados mapeados tornarão desnecessário redigitar os campos no documento de acordo com os nomes dos campos no banco de dados. Para usar uma variável de classe MappedDataField, ela primeiro precisa ser instanciada por exemplo


Dim mdf as MappedDataField
Set mdf = ActiveDocument.MailMerge.DataSource.MappedDataFields(Index:=1)

For Each

Aqui está um exemplo de processamento dos itens MappedDataField em uma coleção.


Dim mdf As MappedDataField
For Each mdf In ActiveDocument.MailMerge.DataSource.MappedDataFields
	
Next mdf

DataFieldIndex

Retorna ou define um valor Long que representa o número do campo correspondente na fonte de dados de mala direta para o qual um campo de dados mapeado mapeia. Leitura/gravação.

Esta propriedade retorna zero se o campo de dados especificado não for mapeado em um campo de dados mapeado.


Sub MapField() 
 With ActiveDocument.MailMerge.DataSource 
 .MappedDataFields(wdAddress1).DataFieldIndex = _ 
 .FieldNames("PostalAddress1").Index 
 End With 
End Sub

DataFieldName

Define ou retorna uma cadeia de caracteres que representa o nome do campo na fonte de dados de mala direta para o qual um campo de dados mapeado mapeia. Leitura/gravação.

Uma sequência de caracteres vazia é retornada se o campo de dados especificado não for mapeado em um campo de dados mapeado.


Sub MappedFields() 
 Dim intCount As Integer 
 Dim docCurrent As Document 
 Dim docNew As Document 
 
 On Error Resume Next 
 
 Set docCurrent = ActiveDocument 
 Set docNew = Documents.Add 
 
 'Add leader tab to new document 
 docNew.Paragraphs.TabStops.Add _ 
 Position:=InchesToPoints(3.5), _ 
 Leader:=wdTabLeaderDots 
 
 With docCurrent.MailMerge.DataSource 
 
 'Insert heading paragraph for tabbed columns 
 docNew.Content.InsertAfter "Word Mapped Data Field" _ 
 & vbTab & "Data Source Field" 
 
 Do 
 intCount = intCount + 1 
 
 'Insert Word mapped data field name and the 
 'corresponding data source field name 
 docNew.Content.InsertAfter .MappedDataFields( _ 
 Index:=intCount).Name & vbTab & _ 
 .MappedDataFields(Index:=intCount) _ 
 .DataFieldName 
 
 'Insert paragraph 
 docNew.Content.InsertParagraphAfter 
 Loop Until intCount = .MappedDataFields.Count 
 
 End With 
 
End Sub

Index

Retorna um Long que representa a posição de um item em uma coleção. Somente leitura.


Dim lngIndex As Long
lngIndex = ActiveDocument.MailMerge.DataSource.MappedDataFields(1).Index

Name

Retorna o nome do objeto especificado. Cadeia de caracteressomente leitura.


Dim strName As String
strName = ActiveDocument.MailMerge.DataSource.MappedDataFields(1).Name

Value

Retorna o conteúdo do campo de dados de mala direta ou campo de dados mapeado para o registro atual. Cadeia de caracteressomente leitura.

Use a propriedade ActiveRecord para definir o registro ativo em uma fonte de dados de mala direta.


For Each dataF In _ 
 Documents("Main.doc").MailMerge.DataSource.DataFields 
 If dataF.Value <> "" Then dRecord = dRecord & _ 
 dataF.Value & vbCr 
Next dataF 
MsgBox dRecord