Как заполнить массив информацией из текстового файла и затем использовать этот массив? - PullRequest
0 голосов
/ 29 августа 2018

извините, если этот вопрос уже был задан, но не смог его найти, и подобные примеры не сработали.

Я хочу поместить информацию о текстовом файле в массив на VBA. А затем используйте этот массив для заполнения различных строк кода. Вы можете мне помочь? Сейчас я не могу прочитать файл и заполнить массив.

Идея такова: Документ с номером клиента, адресом и т. Д. Для каждой строки VBA читает текст и заполняет массив, каждая позиция является строкой текста. Я использую массив для заполнения шаблона:

Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "CLIENTENumber"
        .Replacement.Text = ARRAY[Positionwithclient]
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll

Спасибо !!

Для получения дополнительной информации информация на txt организована следующим образом:

565656
Peter
(etc)

Будучи первым номером клиента, вторым - именем и т. Д. Затем я заменю «CLIENTNumber» в текстовом документе на 565656, например. Код замены указан выше и работает хорошо.

1 Ответ

0 голосов
/ 29 августа 2018

Попробуйте что-нибудь вроде:

Sub Demo()
Application.ScreenUpdating = False
Dim SrcDoc As Document, RList, i As Long
Const FList As String = "CLIENTNumber,CLIENTName"
'Load the strings from the reference file into a text string to be used as an array.
Set SrcDoc = Documents.Open("Drive:\FilePath\DataList.txt", ReadOnly:=True, AddToRecentFiles:=False, Visible:=False)
With SrcDoc
  RList = .Range.Text
  .Close False
End With
Set SrcDoc = Nothing
With ActiveDocument.Range.Find
  .ClearFormatting
  .Replacement.ClearFormatting
  .MatchWholeWord = True
  .MatchCase = True
  For i = 0 To UBound(Split(FList, ","))
    .Text = Split(FList, vbCr)(i)
    .Replacement.Text = Split(RList, vbCr)(i)
    .Execute Replace:=wdReplaceAll
  Next
End With
Application.ScreenUpdating = True
End Sub

Просто укажите все элементы для строки FList, не используя ничего, кроме запятой, разделяющей их, и в том порядке, в котором они появляются в текстовом файле, а также полный путь и имя для текстового файла, где это указано.

...