-Поиск по дневнику

Поиск сообщений в rss_sql_ru_access_programming

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 16.03.2006
Записей:
Комментариев:
Написано: 4


VBA Постраничный импорт из Word

Среда, 09 Августа 2017 г. 12:26 + в цитатник
Доброго времени суток
Весной занимался макросом импорт из 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


 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку