Vba сохранить word как pdf
Обновлено: 07.07.2024
Задача переноса данных из таблицы в PDF-файле на лист Microsoft Excel - это всегда "весело". Особенно если у вас нет дорогих программ распознавания типа FineReader или чего-то подобного. Прямое копирование обычно ни к чему хорошему не приводит, т.к. после вставки скопированных данных на лист, они, скорее всего, "слипнутся" в один столбец. Так что их потом придется кропотливо разделять с помощью инструмента Текст по столбцам с вкладки Данные (Data - Text to Columns) .
И само-собой, копирование возможно только для тех PDF-файлов, где есть текстовый слой, т.е. с только что отсканированным с бумаги в PDF документом это не сработает в принципе.
Но все не так грустно, на самом деле :)
Если у вас Office 2013 или 2016, то за пару минут без дополнительных программ вполне можно реализовать перенос данных из PDF в Microsoft Excel. А помогут нам в этом Word и Power Query.
Для примера, давайте возьмем вот такой PDF-отчет с кучей текста, формул и таблиц с сайта Европейской Экономической Комиссии:
. и попробуем вытащить из него в Excel, скажем первую таблицу:
Шаг 1. Открываем PDF в Word
Почему-то мало кто знает, но начиная с 2013 года Microsoft Word научился открывать и распознавать PDF файлы (даже отсканированные, т.е. без текстового слоя!). Делается это совершенно стандартным образом: открываем Word, жмем Файл - Открыть (File - Open) и уточняем PDF-формат в выпадающем списке в правом нижнем углу окна.
Затем выбираем нужный нам PDF-файл и жмем Открыть (Open) . Word сообщает нам, что собирается запустить распознавание этого документа в текст:
Соглашаемся и через несколько секунд увидим наш PDF открытым для редактирования уже в Word:
Само-собой, у документа частично слетит дизайн, стили, шрифты, колонтитулы и т.п., но для нас это не важно - нам нужны только данные из таблиц. В принципе, на этом этапе уже возникает соблазн дальше просто скопировать таблицу из распознанного документа в Word и просто вставить ее в Excel. Иногда это срабатывает, но чаще приводит ко всевозможным искажениям данных - например числа могут превратиться в даты или остаться текстом, как в нашем случае, т.к. в PDF используется не российские разделители:
Так что давайте не будем срезать углы, а сделаем все чуть сложнее, но правильно.
Этап 2. Сохраняем документ как веб-страницу
Чтобы потом загрузить полученные данные в Excel (через Power Query), наш документ в Word нужно сохранить в формате веб-страницы - этот формат является, в данном случае, неким общим знаменателем между Word'ом и Excel'ем.
Для этого идем в меню Файл - Сохранить как (File - Save As) или жмем клавишу F12 на клавиатуре и в открывшемся окне выбираем тип файла Веб-страница в одном файле (Webpage - Single file) :
После сохранения должен получиться файл с расширением mhtml (если у вас в Проводнике видны расширения файлов).
Этап 3. Загружаем файл в Excel через Power Query
Можно открыть созданный MHTML-файл в Excel напрямую, но тогда мы получим, во-первых сразу все содержимое PDF вместе текстом и кучей ненужных таблиц, а, во-вторых, опять потеряем данные из-за неправильных разделителей. Поэтому импорт в Excel мы будем делать через надстройку Power Query. Это совершенно бесплатная надстройка, с помощью которой можно загружать в Excel данные практически из любых источников (файлов, папок, баз данных, ERP-систем) и всячески затем полученные данные трансформировать, придавая им нужную форму.
Если у вас Excel 2010-2013, то скачать Power Query можно с официального сайта Microsoft - после установки у вас появится вкладка Power Query. Если у вас Excel 2016 или новее, то качать ничего не нужно - весь функционал уже встроен в Excel по-умолчанию и находится на вкладке Данные (Data) в группе Загрузить и преобразовать (Get & Transform) .
Так что идем либо на вкладку Данные, либо на вкладку Power Query и выбираем команду Получить данные или Создать запрос - Из файла - Из XML. Чтобы были видны не только XML-файлы - меняем в выпадающем списке в правом нижнем углу окна фильтры на Все файлы (All files) и указываем наш MHTML-файл:
Обратите внимание, что импорт успешно не завершится, т.к. Power Query ждет от нас XML, а у нас, на самом деле, HTML-формат. Поэтому в следующем появившемся окне нужно будет щелкнуть правой кнопкой мыши по непонятному для Power Query файлу и уточнить его формат:
После этого файл будет корректно распознан и мы увидим список всех таблиц, которые в нем есть:
Посмотреть содержимое таблиц можно, если щелкать левой кнопкой мыши в белый фон (не в слово Table!) ячеек в столбце Data.
Когда нужная таблица определена, щелкните по зеленому слову Table - и вы "провалитесь" в её содержимое:
Останется проделать несколько простых действий, чтобы "причесать" ее содержимое, а именно:
- удалить ненужные столбцы (правой кнопкой мыши по заголовку столбца - Удалить)
- заменить точки на запятые (выделить столбцы, щелкнуть правой - Замена значений)
- удалить знаки равно в шапке (выделить столбцы, щелкнуть правой - Замена значений)
- удалить верхнюю строку (Главная- Удалить строки - Удаление верхних строк)
- удалить пустые строки (Главная - Удалить строки - Удаление пустых строк)
- поднять первую строку в шапку таблицы (Главная - Использовать первую строку в качестве заголовков)
- отфильтровать лишние данные с помощью фильтра
Когда таблица будет приведена в нормальный вид, ее можно выгрузить на лист командой Закрыть и загрузить (Close & Load) на Главной вкладке. И мы получим вот такую красоту, с которой уже можно работать:
Как известно, документ Word можно сохранить как файл PDF. Но в некоторых случаях вы можете просто экспортировать выбранные страницы в виде файла PDF, как вы можете это сделать? В этой статье я расскажу о некоторых методах решения этой проблемы.
Экспорт выбранных страниц в PDF с помощью функции «Сохранить как»
В Word вы можете использовать встроенную функцию «Сохранить как» для экспорта выделенного фрагмента в файл PDF.
1. Выберите содержимое, которое вы хотите экспортировать в формате PDF, щелкните Файл > Сохранить как > Приложения.
2. в Сохранить как диалоговом окне выберите папку и имя для нового файла, выберите PDF в Сохранить как раскрывающийся список, затем щелкните Параметры.
3. в Параметры диалог, проверьте Выбор , нажмите OK , чтобы вернуться к Сохранить как Диалог.
4. Нажмите Сохраните.
Экспорт выбранных страниц в PDF с помощью VBA
Если вы знакомы с кодом макроса, вы можете попробовать ниже VBA.
1. Выберите содержимое, которое вы хотите сохранить как один PDF-файл, нажмите Alt + F11 ключ для открытия Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модульскопируйте и вставьте приведенный ниже код в Модуль скрипты.
VBA: экспорт выделенного в PDF
3. Нажмите F5 ключ для запуска кода. В появившемся диалоговом окне выберите папку для размещения нового файла.
4. Нажмите OK, появится диалоговое окно, в котором можно указать имя файла.
5. Нажмите OK. Новый файл откроется автоматически после успешного сохранения.
Примечание: Выбранные вами страницы должны быть последовательными.
Экспорт выбранных страниц в PDF с помощью Kutools for Word
Если вы хотите экспортировать выбранные страницы в PDF или другие типы файлов, вы можете использовать Диапазон экспорта в файл полезности Kutools for Word.
После установки Kutools for Word, сделайте, как показано ниже: (Бесплатная загрузка Kutools for Word прямо сейчас!)
1. Выберите содержимое, щелкните Kutools Plus > Экспорт / Импорт > Диапазон экспорта в файл.
2. в Диапазон экспорта в файл диалоговом окне выберите папку для сохранения файла PDF в Сохранить путь раздел, затем проверьте PDF-файл или другой тип файла, который вам нужен Тип файла раздел, в Параметры файла раздел, отметьте нужный вариант.
3. Нажмите Ok. Назовите файл pdf во всплывающем окне Kutools for Word Диалог.
Затем выделение было экспортировано как новый файл PDF.
Наконечник: файл откроется автоматически, если вы отметите Откройте файл после экспорта флажок.
Просмотр и редактирование нескольких документов Word / книг Excel с вкладками в Firefox, Chrome, Internet Explore 10!
Возможно, вы знакомы с просмотром нескольких веб-страниц в Firefox / Chrome / IE и возможностью переключения между ними, легко щелкая соответствующие вкладки. Здесь вкладка Office поддерживает аналогичную обработку, которая позволяет вам просматривать несколько документов Word или книг Excel в одном окне Word или Excel и легко переключаться между ними, щелкая их вкладки.
Нажмите, чтобы получить бесплатную пробную версию вкладки Office!
По сути, что тут может быть особенно – нажал на кнопку "Сохранить" или "Сохранить Как" и все, радуйся жизни. Но, так как я очень люблю оперировать, тьфу ты… программировать, то я решил рассмотреть решение данной задачи программным путем.
Из всей объектной модели Word, компонентами, которые предоставляют средства для сохранения в ворде документа, являются объект Document и коллекция Documents. По сути, у объекта Document есть два метода: Save и SaveAs, которые соответствуют диалоговым окнам " Сохранить " и " Сохранить Как ", а коллекция предоставляет только метод Save. Я уже рассматривал данный объект и коллекцию, но не углублялся в методы Save и SaveAs, а все потому, что у метода SaveAs огромное количество параметров, описание которых тянет на отдельную статью. Вот я и решил собрать все это воедино, и описать.
Объект Document – сохранение в ворде
Save (NoPrompt, OriginalFormat) – Показывает, как в ворде сохранить все файлы, которые входят в коллекцию Documents.
NoPrompt – Если значение true, то Word автоматически сохранит все файлы. Если значение false - Word предложит пользователю сохранить каждый файл, изменившийся с момента последнего сохранения.
OriginalFormat - Определяет, как документы будут сохранены в ворде. Содержит значение константы WdOriginalFormat:
- wdOriginalDocumentFormat - 1 - Оригинальный формат.
- wdPromptUser - 2 – Пользователю будет предложено выбрать формат.
- wdWordDocument - 0 – Формат Microsoft Word.
Если сохранение в ворде ранее не производилось, то диалоговое окно "Сохранить как" запросит у пользователя имя файла.
SaveAs (FileName, FileFormat, LockComments, Password, AddToRecentFiles, WritePassword, ReadOnlyRecommended, EmbedTrueTypeFonts, SaveNativePictureFormat, SaveFormsData, SaveAsAOCELetter, Encoding, InsertLineBreaks, AllowSubstitutions, LineEnding, AddBiDiMarks, CompatibilityMode) – Сохранение файла Word с новым именем или форматом (Диалоговое окно "Сохранить Как").
FileName – Позволяет задать путь и имя сохраняемого файла в ворде. Если задать только имя файла, то произойдет сохранение в ворд в папке по умолчанию – "Мои Документы". Если документ с таким именем уже существует, то произойдет перезапись без уведомления пользователя.
FileFormat – Задаем формат, в котором сохраняется документ в Word. Значение константы WdSaveFormat.
Константа WdSaveFormat позволяет задать формат PDF (wdFormatPDF – 17) или XPS (wdFormatXPS - 18). Однако, что бы сохранить в ворде файл в этих форматах, вам придется установить расширение SaveAsPDFandXPS, которое доступно на сайте Майкрософт. Смотрите статью "Как в ворде сохранить документ в PDF формате"
LockComments – Содержит логические значения, true - заблокировать документ для комментариев. По умолчанию используется false.
Password – Пароль для открытия.
AddToRecentFiles – Содержит логическое значение, true - добавить документ в список недавно использовавшихся в меню Файл. По умолчанию используется True.
WritePassword - Пароль для сохранения в ворде изменений.
ReadOnlyRecommended - Содержит логические значения, true – открывать только для чтения. По умолчанию используется False.
EmbedTrueTypeFonts - Содержит логические значения, true – сохранить TrueType шрифты вместе с документом.
SaveNativePictureFormat – Параметр используется, если графики были импортированы из другой платформы (например, Macintosh). true - сохранить в ворд только версию Microsoft Windows импортируемых графиков.
SaveFormsData –true - сохранить в ворд данные, введенные пользователем в форме в виде записи.
SaveAsAOCELetter – Параметр актуален, если документ имеет прикрепленное почтовое вложение. true – сохраняем документ Word как AOCE письмо.
Encoding – Отвечает за кодировку текста. По умолчанию используется системная кодировка. Параметр должен содержать значение константы MsoEncoding .
InsertLineBreaks – Параметр используется, если происходит сохранение документа в Word в виде текстового файла. true - вставить разрывы строк в конце каждой строки текста.
AllowSubstitutions – Актуально, если файл ворд сохраняется в виде текстового файла. Значение true позволяет Word заменить некоторые символы в тексте их упрощенными аналогами. Например, символа авторского права. По умолчанию используется значение False.
LineEnding – Определяет форматирование строк и абзацев в документах, сохраненных в виде текстовых файлов. Может быть одним из следующих значений константы WdLineEndingType:
- wdCRLF - 0 - возврат каретки и строки.
- wdCROnly - 1 - Возврат только каретки.
AddBiDiMarks – true - добавить управляющие символы в выходной файл.
CompatibilityMode - Режим совместимости, который Word2010 использует при открытии документа. Значение константы WdCompatibilityMode:
- wdCurrent - 65535 - Совместимость режим эквивалентен последней версии Microsoft Word.
- wdWord2003 - 11 - Word2010 введен в режиме, который наиболее совместим с Word2003.
- wdWord2007 - 12 - Word2010 введен в режиме, который наиболее совместим с Office Word2007.
- wdWord2010 - 14 - Word2013 введен в режиме, который наиболее совместим.
- wdWord2013 - 15 - По умолчанию. Все функции Word 2013 включены.
Если данный параметр отсутствует, то принимается значение 0 – сохраняется текущий режим совместимости.
Коллекция Documents – как в ворде сохранить документ
Save (NoPrompt, OriginalFormat) – Метод выполняет ту же функцию, что и Save объекта Document, только для коллекции Documents.
Хорошо, с теорией закончили, теперь привожу два примера программного кода на языке VBScript и JScript, котрые создают новый документ, вставляют в него форматированный текст, содержащий информацию о сервере сценариев Windows Script Host и сохраняют в ворде данный документ в текущем каталоге (каталог, откуда был произведен запуск сценария).
Программный код на языке VBSCRIPT:
Программный код на языке JSCRIPT:
И так, с программированием закончили, теперь можно приступить к разбору программного кода. Обратите внимание, что в примере для JSCRIPT я изменил имена переменных, добавив к ним единицу .
В самом начале происходит подключение различных классов и коллекций, которые позволяет подключить объектную модель Word, и создать новый документ. Далее следует объявление переменной CurDir, она будет хранить путь к текущему каталогу, именно в этот каталог произойдет сохранение документа в ворде. Доступ к текущему каталогу осуществляется через класс WScript.Shell – смотрите статью "Объект WScript.Shell метод ExpandEnvironmentStrings и свойство CurrentDirectory - Переменные среды Windows и текущий каталог".
Далее с помощью класса Font – статья "Объект Word Font - параметры форматирования шрифта", происходит настройка параметров текста: цвет, размер и так далее. После с помощью метода TypeText класса Selection происходит вставка фразы "как в ворде сохранить документ", данная фраза также будет отформатирована: жирный шрифт и увеличенный размер символов. После мы дважды вставляет параграф – метод TypeParagraph.
Следующим этапом является использование несколько раз процедуры TXInsert, который будет передаваться два параметра: две текстовые строки. Все происходит так, что процедура вставляет в документ параметры свойств класса WScript – имя свойства и его значение.
После всей проделанной работы происходит вызов метода SaveAs, которые отвечает за сохранение файла Word. В нашем случае, в сценарии на языке VBSCRIPT произойдет сохранение документа в ворде под именем "WscInfo_vbs.doc", а в сценарии на языке JSCRIPT – сохранение файла в ворде под именем "WscInfo_js.doc"
Спасибо за внимание. Автор блога Владимир Баталий
По умолчанию, само приложение Word не позволяет сохранять документы в заданных форматах (исключением являются последние версии), что немного обидно, учитывая функциональные возможности самой компании Майкрософт. Но это и не удивительно, так как дядюшка Билл любит радовать своего потребителя различными косяками и багами – каких только нецензурных слов удостоился тот же Internet Explorer .
В первую очередь, стоит сообщить хорошую новость – есть расширение "SaveAsPDFandXPS", которое находится в бесплатном доступе и его можно скачать с официального сайта Майкрософт. После установки данного расширения появляется возможность сохранить страницу как PDF в Word документе, причем, как в ручном режиме (соответствующий тип файла появится в диалоговом окне "Сохранить Как"), так и программным путем.
Собственно, программный метод получения формата pdf мы и рассмотрим, а именно, метод ExportAsFixedFormat объекта Range, который позволяет экспортировать целиком или частично содержимое документа в нужный формат.
Данный метод содержит много параметров, и поэтому, я решил описать его в отдельной статье.
ExportAsFixedFormat (OutputFileName, ExportFormat, OpenAfterExport, OptimizeFor, ExportCurrentPage, Item, IncludeDocProps, KeepIRM, CreateBookmarks, DocStructureTags, BitmapMissingFonts, UseISO19005_1, FixedFormatExtClassPtr) - Сохраняет часть документа Word как PDF или XPS формат. Только первые два параметра являются обязательными.
OutputFileName – Обязательный параметр, который задает путь и имя сохраняемого в Word PDF или XPS-файла.
ExportFormat – Обязательный параметр, который определяет формат сохранения в Word (PDF или XPS). Значение константы WdExportFormat:
- wdExportFormatPDF - 17 - Экспортировать документ в формате PDF.
- wdExportFormatXPS - 18 - Экспортировать документ в формате XML Paper Specification (XPS).
OpenAfterExport - Открыть новый файл после экспорта содержимого – значение true.
OptimizeFor – Параметр указывает, следует ли оптимизировать файл для экрана или для печати. Значение константы WdExportOptimizeFor:
- wdExportOptimizeForOnScreen - 1 – Для экрана - низкое качество и маленький размер.
- wdExportOptimizeForPrint - 0 - Для печати – высокое качество и большой размер.
ExportCurrentPage – Определяет, что нужно экспортировать, всю страницу (true) или только выбранный диапазон (false). Word сохранение в PDF.
Item - Определяет процесс экспорта - включать только текст или текст с разметкой. Значение константы WdExportItem:
- wdExportDocumentContent - 0 - Экспорт документа без разметки.
- wdExportDocumentWithMarkup - 7 - Экспорт документа с разметкой.
IncludeDocProps - Указывает, следует ли включить свойства документа в недавно экспортируемый файл (true). Сохранить как PDF в Word.
KeepIRM - Указывает, следует ли копировать права доступа IRM в XPS документ, если исходный документ имеет защиту IRM. Значение по умолчанию True.
CreateBookmarks - Указывает, следует ли экспортировать закладки и тип закладки. Значение константы WdExportCreateBookmarks:
- wdExportCreateHeadingBookmarks - 1 - Создание закладки в экспортируемом документе для всех заголовком, которые включают только заголовки внутри основного документа и текстовые поля не в пределах колонтитулов, концевых сносок, сносок или комментариев.
- wdExportCreateNoBookmarks - 0 - Не создавать закладки в экспортируемом документе.
- wdExportCreateWordBookmarks - 2 - Создание закладки в экспортируемом документе для каждой закладки, которая включает все закладки кроме тех, которые содержатся в верхнем и нижнем колонтитулах.
DocStructureTags - Указывает, следует ли включать дополнительные данные, которые помогут при чтении с экрана, например информацию о потоке и логическую организацию содержимого. Значение по умолчанию True. Документ Word сохранить в PDF.
BitmapMissingFonts - Указывает, следует ли включать растровое изображение текста. Установите этот параметр в значение True, когда шрифт не поддерживается в PDF.
UseISO19005_1 и FixedFormatExtClassPtr – Данные параметры не предоставляют практического интереса.
Теперь давайте рассмотрим два примера программного кода – на языке VBScript и JScript. Оба примера создают новый документ Word, далее вставляют в него текст, содержащий информацию о сервере сценариев Windows Script Host.
Программный код на VBSCRIPT:
Программный код на JSCRIPT:
Сами сценарии сохраняют документ Word в формате PDF в текущем каталоге, то есть, в каталоге, из которого произошел запуск сценария. Две функции LRange и TXInsert позволяют выбрать нужный диапазон текста (точнее нужные абзацы) и применить форматирование текста (тип шрифта и размер). Метод SaveAs также позволяет сохранить документ Word в PDF формате или в любом другом формате, данный метод принадлежит объекту Document. Более детально похожий пример я рассмотрел в этой статье.
Спасибо за внимание. Автор блога Владимир Баталий
Читайте также: