Добрый день.
Организация получает отчет об оказанных услугах (связь) в формате pdf. Для дальнейшей обработки текст из этого пдф необходимо вытащить в Excel.
Вручную всё получается прекрасно: открыли pdf, Ctrl+A,C,Q, вернулись в Excel и Ctrl+V. Форматирование и таблицы теряются, весь текст как попало вставляется в колонку A, но это не проблема - парсер я уже написал.
Решил задачу "в лоб":
Таймауты подбирал экспериментальным путем, и в большинстве случаев макрос отрабатывает ожидаемо. Но часто бывает так, что пдф открывается и остается на экране, а в Excel вставляется предыдущее содержимое буфера обмена, либо лезет ошибка вставки если буфер пуст.
Какой винтик подкрутить, чтобы работало стабильно? Или какими ещё методами можно воспользоваться?
Имеющиеся ограничения: Excel 2007, Adobe Acrobat Reader свежий. Другие варианты не рассматриваю - нет возможности устанавливать что-то дополнительно на рабочих местах.
Организация получает отчет об оказанных услугах (связь) в формате pdf. Для дальнейшей обработки текст из этого пдф необходимо вытащить в Excel.
Вручную всё получается прекрасно: открыли pdf, Ctrl+A,C,Q, вернулись в Excel и Ctrl+V. Форматирование и таблицы теряются, весь текст как попало вставляется в колонку A, но это не проблема - парсер я уже написал.
Решил задачу "в лоб":
| Код |
|---|
Set wsh = CreateObject("wscript.shell")
wsh.Run """" & path_to_pdf & """": Application.Wait (Now + TimeSerial(0, 0, 2))
wsh.SendKeys "^a": Application.Wait (Now + TimeSerial(0, 0, 2))
wsh.SendKeys "^c": Application.Wait (Now + TimeSerial(0, 0, 5))
wsh.SendKeys "^q": Application.Wait (Now + TimeSerial(0, 0, 1))
ActiveSheet.Paste Destination:=Cells(Rows.Count, 1).End(xlUp).Offset(1) ' файлов может быть несколько, поэтому вставляем в конец |
Какой винтик подкрутить, чтобы работало стабильно? Или какими ещё методами можно воспользоваться?
Имеющиеся ограничения: Excel 2007, Adobe Acrobat Reader свежий. Другие варианты не рассматриваю - нет возможности устанавливать что-то дополнительно на рабочих местах.