Конвертирование таблиц Word в Excel средствами VBA

Программирование на Visual Basic for Applications
AsDev
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 30.10.2004 (Сб) 11:50

Конвертирование таблиц Word в Excel средствами VBA

Сообщение AsDev » 19.04.2006 (Ср) 13:21

Столкнулся с проблемой.Необходимо из Word скопировать кучу таблиц в Excel со сложной структурой.Может кто сталкивался в подобной проблемой и знает хотя бы частичный способ конвертирования средствами VBA?

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 19.04.2006 (Ср) 14:12

Такой макрос может помочь:

Код: Выделить всё
Dim objXl As Object, tb As Table
  Set objXl = CreateObject("Excel.Application")
  objXl.Workbooks.Add
  objXl .Visible = True
For Each tb In Documents(1).Tables
    tb.Select
    Selection.Copy
    objXl.ActiveSheet.Paste
    objXl.Workbooks(1).Worksheets.Add.Activate
Next

Al Khamid
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 274
Зарегистрирован: 11.02.2004 (Ср) 10:00
Откуда: Москва, Ховрино

Сообщение Al Khamid » 21.04.2006 (Пт) 11:45

Последний раз редактировалось Al Khamid 18.11.2007 (Вс) 2:33, всего редактировалось 1 раз.

AsDev
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 30.10.2004 (Сб) 11:50

Сообщение AsDev » 21.04.2006 (Пт) 15:33

Вот и я так думаю,а может есть более изящный способ?

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 21.04.2006 (Пт) 15:50

лучше вроде ничего не нашел
http://bbs.vbstreets.ru/viewtopic.php?t ... word+cells
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 21.04.2006 (Пт) 18:35

Al Khamid
Пришли сложную таблицу и пожелания, попробую сохранить полную структуру.

AsDev
Новичок
Новичок
 
Сообщения: 35
Зарегистрирован: 30.10.2004 (Сб) 11:50

Сообщение AsDev » 22.04.2006 (Сб) 5:09

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

Димитрий
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 194
Зарегистрирован: 26.01.2005 (Ср) 22:47
Откуда: Волгоград

Сообщение Димитрий » 22.04.2006 (Сб) 20:50

AsDev
Мне нужен пример для образца (чего я поковырял бы :wink: )

nopik
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.08.2005 (Вс) 13:13

Сообщение nopik » 03.05.2006 (Ср) 20:10

У меня проблема аналогичная - надо за- и изгонять данные в таблицах Word.
Единственно работающее решение для таблиц "нарисованных" от руки (Word нумерует ячейки таблицы в процессе добавления, и черта, нарисованная оператором через ячейку изменит ПОРЯДКОВЫЕ НОМЕРА ячеек в массиве):
Selection.StartOf Unit:=wdCell, Extend:=wdMove
Selection.EndOf Unit:=wdCell, Extend:=wdExtend
'Именно через Extend
Selection.MoveRight' или .Left или .Down
'Т.е. прямым соответствием нажатию клавиш.
'Только этот вариант работает для "пересекающихся" строк
'проходит только при в режиме отображения страницы
(часто, при фиксированной структуре, можно в десятки раз ускориться через .Cells().Select : Move unit:=wdCell)
Также, строки иногда проще "проходить" путем .Row.Select : Selection.MoveDown

nopik
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 14.08.2005 (Вс) 13:13

Сообщение nopik » 03.05.2006 (Ср) 20:17

Но вот на границе страниц приходится городить:
Код: Выделить всё
PagMargin = Selection.Cells(1).Range.Information(wdVerticalPositionRelativeToPage)
     Selection.MoveDown
     If (Selection.Information(wdWithInTable)) Then
      Do While (Selection.Cells(1).Range.Information(wdVerticalPositionRelativeToPage) = PagMargin)
      Selection.MoveDown
      Loop
      Selection.StartOf Unit:=wdCell, Extend:=wdMove
      Selection.EndOf Unit:=wdCell, Extend:=wdExtend
     End If


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 69

    TopList