Можно ли поместить значения источника данных слияния в переменную массива? - PullRequest
0 голосов
/ 02 марта 2020

Я новичок в VBA. Я прошу прощения за любые неудобства, вызванные этим вопросом.

Я пытаюсь поместить значения источника данных в массив переменных. Это мои коды для справки.

    Dim objDoc As Document
    Dim FilePath As String

    With Dialogs(wdDialogFileOpen)
        If .Display Then
            If .Name <> "" Then
                FilePath = .Name

                With ActiveDocument.MailMerge

                Dim tempVariable() As String
                'To attach selected file to the data source

                '**ERROR**
                tempVariable = Array(
                ActiveDocument.MailMerge.OpenDataSource Name:=FilePath, _
                                        ReadOnly:=True, _
                                        LinkToSource:=True, _
                                        SubType:=WdMergeSubType.wdMergeSubTypeOther)

'                ActiveDocument.MailMerge.OpenDataSource Name:=FilePath, _
'                                        ReadOnly:=True, _
'                                        LinkToSource:=True, _
'                                        SubType:=WdMergeSubType.wdMergeSubTypeOther
                End With
            End If '.Name <> "" Then
        Else '.Display Then
            MsgBox "No file selected", vbOKOnly, "File not selected"
        End If '.Display Then
    End With

К сожалению, будет ошибка, которая говорит ...

Ошибка компиляции: Ожидается: конец оператора

Что я могу сделать, чтобы решить эту проблему? Из того, что я предположил, это проблема синтаксиса.

1 Ответ

0 голосов
/ 02 марта 2020

С какой целью вы пытаетесь поместить данные в массив? Это не поможет завершить почтовое слияние. Тем не менее, попробуйте:

Sub Capture_Merge_Data()
Dim d As Long, i As Long, j As Long, r As Long
With ActiveDocument.MailMerge.DataSource
  d = .DataFields.Count: r = .RecordCount
  ReDim DataArray(d, r)
  For i = 1 To r
    .ActiveRecord = i
    For j = 1 To d
      DataArray(j - 1, i - 1) = .DataFields(j)
      If i * j Mod 1000 = 0 Then DoEvents
    Next j
  Next i
End With
MsgBox "DataArray populated with " & d & " data fields from " & r & " records."
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...