Доброго времени суток
Весной занимался макросом импорт из word в access (да, такой нужен; word - excel - access в моём случае не вариант). Код уже видели тут, ну вот он:
Dim app As Word.Application
Dim wd As Word.Document
Dim wt As Word.Table
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i As Long
Set app = CreateObject(“Word.Application”)
Set wd = app.DocumentsOpen(Forms![Forma].[Pole].Value)
Set wt = wd.Table(1)
Set db = CurrentDb
Set rs = db.OpenRecordset(“table”)
With wt
For I = 4 To Rows.Count
With rs
On Error Resume Next
Add.New
![pole] = wt.Cell(i, 1).RangeText
…
On Error GoTo 0
.Update
End With
Next
End With
rst.Close: Set rst = Nothing
dbs.Close: Set rst = Nothing
doc.Close: Set doc = Nothing
appWord.Quit: Set appWord = Nothing
Написал. Заточил под определённую таблицу word. Далее занимался другими вещами, про ворды благополучно забыл. Но далее возникла необходимость импортировать из ворда. Попались многостраничные документы с таблицами овер 20 килострок. И тут стало видно, что такое колличество строк импортируется не просто со скрипом, а с очень жутким скрипом. Импорт мог занять 2+ часов времени. А вернее не сам импорт, а именно обработка данных ворда. Чем больше строк обрабатывается, тем сильнее замедляется программа. Импортировать, скажем, первые 500 строк и импортировать последние 500 той же таблицы - две разные картины по времени.
Я думал как оптимизировать макрос. Занимался различными извращениями. Пытался импортировать по 500 - 1000 строк в цикле, закрывать и открывать документ, аппликейшн, рекордсет внутри цикла - думал, что импортировать не сразу, а по n, но постоянно с новой строки будет быстрее. Ничего более умного по этому вопросу не нашёл, ииии...
Хочу в очередной раз поизгаляться.
Думаю попробовать создать массив на колличество страниц документа. Каждый раз открывать новую страницу и импортировать данные с размещённой на ней таблицы. Знаю как делать такое для листов экселя, а вот с вордом не получается. И возможно ли? Если известен правильный способ оптимизации, то было бы очень здорово. Но и даже если нет, я буду рад узнать как делать постраничный импорт из ворда, пусть он мне и не поможет.
Заранее спасибо
В данный момент не могу понять как импортировать именно тот фрагмент таблицы, размещённый на выбранном листе (таблица одна на многих страницах)
http://www.sql.ru/forum/1268397/vba-postranichnyy-import-iz-word