В настоящее время я пытаюсь передать многострочную строку из Excel в документ Word. Сначала я создаю строку, используя данные ячейки, а затем пытаюсь передать ее в Word методом поиска и замены. Код находит слово в Word (где его заменить), но заменяет его пустой строкой. Пара вещей из этого; во-первых, я Debug.Print
строка, когда происходит замена, и строка заполняется в непосредственном окне. Во-вторых, когда я заменяю слово простой строкой, оно заменяет его в порядке, что приводит меня к мысли, что, похоже, существует проблема с многострочной строкой, которую я пытаюсь отправить в Word. Ниже приведен мой код и все остальное, что может иметь отношение к делу.
Ниже приведен цикл For Each
, который циклически проходит по каждому листу и создает соответствующую строку для этого листа. randNo
представляет случайный номер строки (так как строка должна содержать случайные данные). Но это не имеет отношения к проблеме.
'open the word file
Set objWord = CreateObject("Word.Application")
objWord.Documents.Open strPath & fileOpen, ReadOnly:=False
objWord.Visible = True
For Each ws In Worksheets
lRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
'check if enough rows
If lRow < 11 Then
myLimit = (lRow - 1)
Else
myLimit = 10
End If
'cycle through and concatenate string
For i = 1 To myLimit
randNo = Int((lRow - 2 + 1) * Rnd + 2)
dateStr = ws.Range("A" & randNo).Text
timeStr = ws.Range("B" & randNo).Text
conditionString = conditionString & vbNewLine & dateStr & " " & timeStr & " " & GetAllConditions(dateStr, timeStr)
Next i
'activate word - ready for search and replace
objWord.Activate
textToFind = "RS" & myCntr
finalStr = textToFind & conditionString
With objWord.ActiveDocument.Content.Find
.Text = textToFind
.Replacement.Text = finalStr
Debug.Print finalStr
.Execute Replace:=wdReplaceAll
End With
ThisWorkbook.Activate
myCntr = myCntr + 1
conditionString = ""
Next ws
Ниже приведен пример распечатки finalStr
из окна Immediate в VBE:
RS7
25/09/2018 08:00:00 C2, C5, C6, C7, C8, C9, C10,
06/08/2018 08:00:00 C4, C6, C7,
25/01/2019 14:30:00 C1, C2, C5, C6, C7, C8, C11,
05/11/2018 08:00:00 C6, C7,
31/12/2018 20:30:00 C1, C2, C6, C7, C8, C10, C11,
30/11/2018 08:00:00 C2, C6, C7, C8,
25/09/2018 08:00:00 C2, C5, C6, C7, C8, C9, C10,
11/02/2019 14:30:00 C1, C4, C6, C7, C8,
01/10/2018 14:30:00 C1, C2, C5, C6, C7, C8, C9, C11,
11/09/2018 14:30:00 C1, C2, C3, C4, C6, C7, C8, C9, C10, C11,
Опять же, он находит переменную textToFind
в порядке, но просто заменяет ее пустой строкой вместо обязательной (указанной выше) строки.
Я не уверен относительно причины этого или того, что я упускаю или не понимаю (поскольку я, должно быть, здесь идиот!), Поэтому любая помощь будет принята с благодарностью!
Спасибо