Страница: 1 |
|
Вопрос: Скопировать таблицу из файла PDF в Word
|
Добавлено: 12.01.10 18:56
|
|
Автор вопроса: Олег
|
У меня такая проблема! Надо перенести (скопировать) очень большую (на нескольких страницах книги) таблицу из файла PDF в Word. Если просто её выделить в PDF и скопировать в буфер обмена, а потом вставить в документ Word, то содержимое всех ячеек таблицы превращается в одну непрерывную строку, в которой "контент" одной ячейки никак не отделён от "контента" другой. Нет между ними ни знаков табуляции (код ANSI - 9), ни знаков возвратов каретки (код ANSI - 13).
По команде меню ("Преобразовать текст в таблицу") без этих знаков не получится, следовательно, мне придётся вставлять их туда вручную. Если совершенно уж "вручную" это делать, то надо сначала щелкать мышью в нужных местах, а потом нажимать на "Tab" или на "Enter". И уже после этого "преобразовывать текст в таблицу". Хочется немножечко упростить себе жизнь, а заодно и ума-разума набраться :)
Мой вопрос (просьба) состоит в следующем: подскажите, пожалуйста, как написать макрос, который по "левому" щелчку мыши на определённой позиции документа Word вставлял бы в эту позицию знак табуляции, а по "правому" щелчку знак возврата каретки. В Excel я уже немножечко освоился, а в Word'е ещё только делаю свои первые шаги.
Не могу понять, как здесь "ловить" событие щелчка мыши по странице документа? А что надо вставить в процедуру обработки этого события, я уже сообразил...
В процедуре обработки событии "левого" щелчка будет:
Selection.TypeText Text:=vbTab
А для "правого" будет:
Selection.TypeParagraph
Ответить
|
Номер ответа: 1 Автор ответа: hip
Вопросов: 3 Ответов: 22
|
Профиль | | #1
|
Добавлено: 12.01.10 20:34
|
Возможно есть способ попроще, но как вариант могу предложить вот что:
Создаешь в вордовском проекте модуль класса (пусть это будет Class1). В нем в разделе объявлений пишешь такой код:
- Public WithEvents App As Application
То есть объявляешь одно единственное свойство - App.
После этого вверху окна кода в левом раскрывающемся списке выбираешь это свойство, в правом списке при этом станут доступны события, которые можно ловить. Просто клика левой кнопкой там нет, зато есть двойной клик.
Создаешь две процедуры обработки событий класса.
- Private Sub App_WindowBeforeDoubleClick(ByVal Sel As Selection, Cancel As Boolean)
-
-
-
- End Sub
-
- Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
-
-
- cancel=True
-
- End Sub
Теперь, когда класс готов, объявляешь его в обычном модуле:
- Public newApp As New Class1
И создаешь процедуру инициализации:
- Public Sub Ini()
- Set newApp.App = Application
- End Sub
Теперь, после того, как ты запустишь процедуру ini, объект Application будет содержать уже не обычную инстансу Winword'а, а созданный тобой класс, который представляет собой тот же Word, с той лишь разницей, что при двойном клике или клике правой кнопкой он будет вести себя так, как ты захочешь (все зависит от того, что ты там напишешь в процедурах обработки событий класса).
А вообще, пардон если не в тему, но по моему проще вставить строку в ячейку Excel, и через меню Данные -> Текст по столбцам разбить строку по любым разделителям, хоть по пробелам. Попробуй по крайней мере, думаю выгорит.
Ответить
|
Номер ответа: 3 Автор ответа: Олег
Вопросов: 9 Ответов: 30
|
Профиль | | #3
|
Добавлено: 13.01.10 00:18
|
Спасибо тебе огромное! Я уже попробовал на простом примере... Всё классно работает!
А вообще... по моему проще вставить строку в ячейку Excel, и через меню Данные -> Текст по столбцам разбить строку по любым разделителям, хоть по пробелам. Попробуй по крайней мере, думаю выгорит.
Попробовал... Спасибо за совет. Честно говоря, я и не знал о такой возможности в Excel, теперь буду знать. На самом деле, очень удобная и полезная штука. но боюсь, что в моём случае это не самый удачный (в смысле, наименее трудоёмкий) выбор будет. Там у меня такая таблица, что во многих ячейках целые куски текста, состоящего из нескольких предложений, а в других просто числа или одиночные слова или предложения. Поэтому вот так вот "автоматически" по пробелам разделить не получится...
Ответить
|
Номер ответа: 4 Автор ответа: Олег
Вопросов: 9 Ответов: 30
|
Профиль | | #4
|
Добавлено: 13.01.10 00:33
|
По идее есть специализированные проги, для конвертирования Word => pdf и PDF => Word.
Я знаю, что они есть в природе, и я даже когда-то пытался использовать некоторые из них. Мне ни одна из тех, которые я опробовал, не понравилась именно тем, что она не конвертировала таблицы и картинки. Короче говоря, я в них разочаровался уже давно, и сейчас у меня нет под рукой ни одной из них...
Ну да не беда! Теперь, когда hip подсказал, как упростить вставку табуляторов и возвратов каретки, мне будет гораздо легче!
Ответить
|
Номер ответа: 5 Автор ответа: Алекс
Вопросов: 0 Ответов: 1
|
Профиль | | #5
|
Добавлено: 13.01.10 18:55
|
Может я чего-то не понимаю... У меня после выделения данных в табличном виде в контекстном меня (Acrobat Pro 9 (CS4)) появляется Copy as Table. Ее можно paste в Word. Выглядит прилично (хотя лучше в Excel). Правда вероятны проблемы с многостраничными таблицами, но если количество страниц ограничивается десятком - склеить их потом не трудно. Вот у меня документ с таблицей на 116 страниц. Что с ним делать - ума не приложу...
Ответить
|
Номер ответа: 6 Автор ответа: Олег
Вопросов: 9 Ответов: 30
|
Профиль | | #6
|
Добавлено: 17.01.10 00:18
|
Алекс пишет:
Может я чего-то не понимаю... У меня после выделения данных в табличном виде в контекстном меня (Acrobat Pro 9 (CS4)) появляется Copy as Table. Ее можно paste в Word. Выглядит прилично (хотя лучше в Excel).
У меня Acrobat 7.0. После выделения данных в контекстном меню появляется только "Скопировать в буфер обмена" и "Скопировать с сохранением форматирования"...
Алекс пишет:
Правда вероятны проблемы с многостраничными таблицами, но если количество страниц ограничивается десятком - склеить их потом не трудно. Вот у меня документ с таблицей на 116 страниц. Что с ним делать - ума не приложу...
Мне очень сильно помог Abbyy Fine Reader 8.0 Pro. Там всё очень легко и эффективно!
1. Загружаем либо весь PDF, либо только некоторые его страницы (там предлают выбор).
2. Выделяем таблицу и щёлкаем по ней правой кнопкой, потом в контекстном меню выбираем "Изменить тип блока" > "Таблица", потом жмём на кнопку "Распознать".
3. Таким макаром проходимся по всем листам с нужными таблицами, а потом сохраняем их все (пакетом) в Ворде... Удачи!
Мне очень сильно помог Abbyy Fine Reader 8.0 Pro. Там всё очень легко и эффективно!
1. Загружаем либо весь PDF, либо только некоторые его страницы (там предлают выбор).
2. Выделяем таблицу и щёлкаем по ней правой кнопкой, потом в контекстном меню выбираем "Изменить тип блока" > "Таблица", потом жмём на кнопку "Распознать".
3. Таким макаром проходимся по всем листам с нужными таблицами, а потом сохраняем их все (пакетом) в Ворде... Удачи!
Ответить
|
Страница: 1 |
Поиск по форуму