У меня есть много таблиц в документе Word (.docx), и я хочу легко импортировать их на пустой лист Excel. Таблицы в документе Word не имеют одинаковый размер (строки), а некоторые строки объединяют ячейки.Excel VBA Import Word таблица с объединенными ячейками в Excel
Мой код приведен ниже. Я могу выбрать .docx, а затем выбрать номер таблицы для импорта, но я могу импортировать заголовки, поэтому я не знаю, работает ли это нормально. Я делаю это, потому что хочу сохранить формат таблиц (те же строки) и недействителен, если я использую copy/paste.
Когда я запускаю этот код, я получаю сообщение об ошибке:
Run-time error '5941'. The requested member of the collection does not exist.
На этой линии:
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
Это код:
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
wdFileName = Application.GetOpenFilename("Word files (*.docx),*.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
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 table number of table to import", "Import Word Table", "1")
End If
With .tables(TableNo)
'copy cell contents from Word table cells to Excel cells
For iRow = 1 To .Rows.Count
For iCol = 1 To .Columns.Count
Cells(iRow, iCol) = WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
Next iCol
Next iRow
End With
End With
Set wdDoc = Nothing
End Sub
Формат моих таблиц
<header> Same number of rows for all
6 rows with 2 columns
</header>
<content of the table>
<header1>3 columns combined<header1>
multiple rows with 3 columns
<header1>3 columns combined<header1>
multiple rows with 3 columns
</content of the table>
Это что-то вроде этого:
_______________________
|_________|____________|
|_________|____________|
|_________|____________|
|_________|____________|
|_________|____________|
|_________|____________|
|______________________|
|_____|__________|_____|
|_____|__________|_____|
|_____|__________|_____|
|_____|__________|_____|
|_____|__________|_____|
|______________________|
|_____|__________|_____|
|_____|__________|_____|
|_____|__________|_____|
|_____|__________|_____|
|_____|__________|_____|
Извините за формат таблицы, но я не знаю, как объяснить это лучше. Конечная цель состоит в том, чтобы оставить его в Excel следующим образом:
_______________________
|_________|____________|
|_________|____________|
|_________|____________|
|_________|____________|
|_________|____________|
|_________|____________|
|______________________||______________________|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
|_____|__________|_____||_____|__________|_____|
Как я могу разделить объединенные ячейки, прежде чем вставка в Excel? Этапы будут заключаться в том, чтобы обнаруживать один за другим, как теперь ячейки, и когда только обнаружил 1, разделил ячейку или использовал ее как одну
, пожалуйста, расскажите больше о том, что происходит не так. Логика кажется довольно простой, так что не так с вашим выходом. –
Появляется сообщение об ошибке: Ошибка времени выполнения '5941'. Запрошенного члена коллекции не существует. – CapAm
Ошибка останавливает код в этой строке: ячейки (iRow, iCol) = WorksheetFunction.Clean (.cell (iRow, iCol) .Range.Text). Это может быть ошибка для использования разных столбцов в начале и затем. Поскольку две строки столбцов экспортируются должным образом. – CapAm