Создание таблиц для копирования из Word в Excel - PullRequest
0 голосов
/ 12 мая 2009

Итак, мне нужно было взять некоторые данные, сделанные в таблицах MS Word, и манипулировать в Excel. Я решил получить его из Word в Excel через подпрограмму VBA, чтобы «сэкономить время». Мой исходный документ Word содержал как таблицы двадцати чего-то.

Я взял таблицы исходного документа, извлек свои данные и создал новый документ с новой таблицей, для чего мне понадобилось только скопировать и вставить его в Excel.

Однако, хотя финальная таблица перед копированием выглядит хорошо на слове. Когда я копирую его в Excel, он разбивает ячейки, содержащие целые абзацы, на отдельные ячейки.

Как известно большинству людей, даже если решение выглядит как в Excel, выполняется слияние и центрирование, что сохраняет содержимое только в самой верхней ячейке выбора!

Таким образом, любой совет, будь то лучшее слияние и центр или лучшая "экономия времени" в целом, был бы великолепен.

Вот пример кода:

Sub First()

Dim tableLength, tableIndex
tableLength = ThisDocument.Tables.Count

Dim tblReport As Table
Dim docReport As Document

Set docReport = Documents.Add
Set tblReport = docReport.Tables.Add(Selection.Range, 1, 2)

With tblReport

Dim fieldOne, subvalueAription, subvalueA, subvalueB, subvalueC

For tableIndex = 1 To tableLength

    fieldOne = ThisDocument.Tables(tableIndex).Rows(2).Cells(2).Range.Text
    subvalueA = Trim(ThisDocument.Tables(tableIndex).Rows(4).Cells(2).Range.Text)
    subvalueB = "A: " & Trim(ThisDocument.Tables(tableIndex).Rows(5).Cells(2).Range.Text)
    subvalueC = "B: " & Trim(ThisDocument.Tables(tableIndex).Rows(6).Cells(2).Range.Text)
    subvalueAription = subvalueA & subvalueB & subvalueC & "C: "

    Dim rowNext As row
    Set rowNext = .Rows.Add
    rowNext.Cells(1).Range.Text = fieldOne
    rowNext.Cells(2).Range.Text = subvalueA & subvalueB & subvalueC


Next

End With


End Sub

1 Ответ

0 голосов
/ 14 мая 2009

Excel использует терминатор строки, отличный от Word. Чтобы избежать проблемы с разделением текста из таблицы Word на несколько ячеек Excel, вам нужно самостоятельно обработать преобразование конца строки.

'Word > Excel
 newText = Replace(wordText, vbCrLf, vbLf)

Я выкладываю это по памяти, но это корень этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...