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