Копирование данных из нескольких файлов MS Word в Excel с помощью VBA
Я знаю, что этот вопрос уже задавался ( Копирование данных из нескольких документов word в один лист Excel ) дело в том, что я не могу использовать ответ.
Я новичок в VBA, но я думал, что справлюсь с этим. Я был неправ. Я пытался использовать код, приведенный в упомянутой теме, для анализа некоторых документов Word, сначала с некоторыми поправками, а затем просто используя исходный код. К сожалению, я получаю ошибку "требуется объект" во время выполнения.
Код предоставляется ниже. Документы, из которых я пытаюсь получить данные, - это файлы Word 2003 (сначала я попытался изменить "docx" на "doc", затем сохранить документы в docx и использовать оригинальный сценарий, не помогло). Одно дело, что они на самом деле являются отсканированными и распознанными бумажными документами, так что...
a) большинство таблиц внутри хранятся во фреймах (не знаю, меняет ли это что-либо, предположительно, нет, учитывая их структуру xml)
б) когда я пытаюсь сохранить их как docx, приложение сначала предлагает сохранить их в виде rtfs. Так, может быть, на самом деле это файлы rtf, а не .doc?
Sub macro1()
Dim xl As Object
Set xl = CreateObject("excel.application")
xl.Workbooks.Add
xl.Visible = True
'Here put your path where you have your documents to read:
myPath = "C:somepath" 'End with ''
myFile = Dir(myPath & "*.docx")
xlRow = 1
Do While myFile <> ""
Documents.Open Filename:=myPath & myFile, ConfirmConversions:=False, _
ReadOnly:=False, AddToRecentFiles:=False, PasswordDocument:="", _
PasswordTemplate:="", Revert:=False, WritePasswordDocument:="", _
WritePasswordTemplate:="", Format:=wdOpenFormatAuto, XMLTransform:=""
xlCol = 0
For Each t In ActiveDocument.Tables
For Each r In t.Rows
For Each c In r.Range.Cells
myText = c
myText = Replace(myText, Chr(13), "")
myText = Replace(myText, Chr(7), "")
xlCol = xlCol + 1
xl.ActiveWorkbook.ActiveSheet.Cells(xlRow, xlCol) = myText
Next c
xl.ActiveWorkbook.ActiveSheet.Cells(xlRow, xlCol + 1) = myFile
xlRow = xlRow + 1
xlCol = 0
Next r
Next t
ActiveWindow.Close False
myFile = Dir
Loop
xl.Visible = True
End Sub