Строка Excel.Application.ActiveWorkbook.Worksheets (wkshtName) .Range ("A" & n + 1) = part_name_string не работает, но не генерирует никаких ошибок, поэтому я не вижу, в чем проблема.
Я отлаживал программу несколько раз.Все значения такие, какими они должны быть.В последней строке рабочая книга открыта и активна, wkshtName имеет правильное значение, а part_name_string не пусто.
Sub WordGrab()
Dim n As Integer
Dim SentenceWords
Dim arrayofWords
Dim Rng As Range
Dim ID_array
Dim part_name_string As String
Dim ParagraphCount As Integer
Dim part_name_array(6) As String
Dim oXL As Excel.Application 'Requires loading "Microsoft Excel 16.0 Object Library" from Tools -> References
Dim oWB As Excel.Workbook
Dim oSheet As Excel.Worksheet
Dim oRng As Excel.Range
Dim ExcelWasNotRunning As Boolean
Dim WorkbookToWorkOn As String 'Path of Excel workbook
Dim wkshtName As String 'Name of Excel worksheet
wkshtName = "My Worksheet"
WorkbookToWorkOn = "C:\ …"
On Error Resume Next
Set oXL = GetObject(, "Excel.Application")
If Err Then 'If Excel was not started, starts Excel
ExcelWasNotRunning = True
Set oXL = New Excel.Application
End If
Set oWB = oXL.Workbooks.Open(FileName:=WorkbookToWorkOn) 'Opens Excel workbook
''''' several lines later ''''''
ParagraphCount = ActiveDocument.Paragraphs.Count
For n = 1 To ParagraphCount
SentenceWords = ActiveDocument.Paragraphs(n) ' Takes all text in the n'th paragraph and stores in string / variant
arrayofWords = Split(SentenceWords, "|") 'Cuts paragraph into different strings separated by |
ID_array = Split(arrayofWords(0), " ") 'Stores the first string in arrayofWords in ID_array
I = 1 ‘Initializes I at the second string in arrayofWords
While Len(arrayofWords(I)) < 20 'Leaves off the last string separated by | since it will be long.
part_name_array(I - 1) = arrayofWords(I) 'Puts the remaining strings into part_name_array
I = I + 1
Wend
part_name_string = Join(part_name_array, " ") 'Combines part_name_array into one string
part_name_string = Trim(part_name_string) 'Removes unnecessary spaces
Excel.Application.ActiveWorkbook.Worksheets(wkshtName).Range("A" & n + 1) = part_name_string 'Pastes part_name_array into the first column in the excel worksheet.
Next n
Я ожидаю, что значение part_name_string должно быть сохранено в A2 и т. Д. На рабочем листе.Но рабочий лист остается пустым после запуска кода.