Я ищу сценарий, который будет извлекать таблицу из каждого слова doc, которое у меня есть в папке, и помещать каждый результат таблицы в одну книгу/один рабочий лист в excel. У меня слишком много документов, чтобы делать их по одному. Мне также нужно, чтобы имя файла, из которого они были экспортированы, в последнем финальном столбце (столбец H/или столбец 9, при условии, что данные начинают импортироваться, начиная с столбца A/или столбца1)Экспорт таблиц MS Word из многих текстовых документов в листы Excel
Код, который я нашел, отлично работает, если вы делаете каждый документ по одному, но даже тогда он перезаписывает предыдущие данные в excel, когда вы запускаете его для следующего слова doc (см. ниже).
(то, что я использую сейчас ниже - у меня уходит целый день, чтобы пройти через одну папку)
Option Explicit
Sub ImportWordTable()
Dim wdDoc As Object
Dim wdFileName As Variant
Dim tableNo As Integer 'table number in Word
Dim iRow As Long 'row index in Excel
Dim iCol As Integer 'column index in Excel
Dim resultRow As Long
Dim tableStart As Integer
Dim tableTot As Integer
On Error Resume Next
wdFileName = Application.GetOpenFilename("Word files (*.doc),*.doc", , _
"Browse for file containing table to be imported")
If wdFileName = False Then Exit Sub '(user cancelled import file browser)
Set wdDoc = GetObject(wdFileName) 'open Word file
With wdDoc
tableNo = wdDoc.tables.count
tableTot = wdDoc.tables.count
If tableNo = 0 Then
MsgBox "This document contains no tables", _
vbExclamation, "Import Word Table"
ElseIf tableNo > 1 Then
tableNo = InputBox("This Word document contains " & tableNo & " tables." & vbCrLf & _
"Enter the table to start from", "Import Word Table", "1")
End If
resultRow = 4
For tableStart = 1 To tableTot
With .tables(tableStart)
'copy cell contents from Word table cells to Excel cells
For iRow = 1 To .Rows.count
For iCol = 1 To .Columns.count
Cells(resultRow, iCol) = WorksheetFunction.Clean(.Cell(iRow, iCol).Range.Text)
Next iCol
resultRow = resultRow + 1
Next iRow
End With
resultRow = resultRow + 1
Next tableStart
End With
End Sub
'Код я нашел работу great' Где ваше понимание кода? Что вы пытались улучшить? Пожалуйста, покажите нам, что вы пробовали? Вопросы, требующие кода, должны демонстрировать минимальное понимание проблемы, которую нужно решить. Включите попытки решения, почему они не работают и ожидаемые результаты. См. Также: [Контрольный список вопросов переполнения стека] (http://meta.stackexchange.com/questions/156810/stack-overflow-question-checklist) –
Ну, если вы просто перезапускаете этот скрипт для каждого документа, 'ActiveSheet. Range («A: AZ»). ClearContents, очевидно, собирается очистить то, что было в вашем существующем листе, и логика вывода здесь не ищет и не находит первую пустую строку. Убейте этот вызов ClearContents и постройте логику для обработки нескольких выходов, и это может решить вашу проблему. – admdrew
да, я прошу прощения за то, что не упоминал, что вы можете убить ясное содержимое, но это не устранит проблему. Он просто останавливает ясность. Он по-прежнему перезаписывает предыдущие данные, так как результаты всегда отправляются в четвертую строку. – user3019315