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-отчет с кучей текста, формул и таблиц с сайта Европейской Экономической Комиссии:

Исходный PDF

. и попробуем вытащить из него в Excel, скажем первую таблицу:

Нужная таблица в PDF

Шаг 1. Открываем PDF в Word

Почему-то мало кто знает, но начиная с 2013 года Microsoft Word научился открывать и распознавать PDF файлы (даже отсканированные, т.е. без текстового слоя!). Делается это совершенно стандартным образом: открываем Word, жмем Файл - Открыть (File - Open) и уточняем PDF-формат в выпадающем списке в правом нижнем углу окна.

Затем выбираем нужный нам PDF-файл и жмем Открыть (Open) . Word сообщает нам, что собирается запустить распознавание этого документа в текст:

Запуск распознавания PDF в Word

Соглашаемся и через несколько секунд увидим наш PDF открытым для редактирования уже в 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-файл:

Выбираем MHTML-файл для импорта в Excel

Обратите внимание, что импорт успешно не завершится, т.к. Power Query ждет от нас XML, а у нас, на самом деле, HTML-формат. Поэтому в следующем появившемся окне нужно будет щелкнуть правой кнопкой мыши по непонятному для Power Query файлу и уточнить его формат:

Уточняем настоящий формат файла

После этого файл будет корректно распознан и мы увидим список всех таблиц, которые в нем есть:

Выбираем таблицу для импорта

Посмотреть содержимое таблиц можно, если щелкать левой кнопкой мыши в белый фон (не в слово Table!) ячеек в столбце Data.

Когда нужная таблица определена, щелкните по зеленому слову Table - и вы "провалитесь" в её содержимое:

Нужная нам таблица

Останется проделать несколько простых действий, чтобы "причесать" ее содержимое, а именно:

  1. удалить ненужные столбцы (правой кнопкой мыши по заголовку столбца - Удалить)
  2. заменить точки на запятые (выделить столбцы, щелкнуть правой - Замена значений)
  3. удалить знаки равно в шапке (выделить столбцы, щелкнуть правой - Замена значений)
  4. удалить верхнюю строку (Главная- Удалить строки - Удаление верхних строк)
  5. удалить пустые строки (Главная - Удалить строки - Удаление пустых строк)
  6. поднять первую строку в шапку таблицы (Главная - Использовать первую строку в качестве заголовков)
  7. отфильтровать лишние данные с помощью фильтра

Когда таблица будет приведена в нормальный вид, ее можно выгрузить на лист командой Закрыть и загрузить (Close & Load) на Главной вкладке. И мы получим вот такую красоту, с которой уже можно работать:

Как известно, документ Word можно сохранить как файл PDF. Но в некоторых случаях вы можете просто экспортировать выбранные страницы в виде файла PDF, как вы можете это сделать? В этой статье я расскажу о некоторых методах решения этой проблемы.

Экспорт выбранных страниц в PDF с помощью функции «Сохранить как»

В Word вы можете использовать встроенную функцию «Сохранить как» для экспорта выделенного фрагмента в файл PDF.

doc экспорт выбранной страницы в pdf 1

1. Выберите содержимое, которое вы хотите экспортировать в формате PDF, щелкните Файл > Сохранить как > Приложения.

doc экспорт выбранной страницы в pdf 2

2. в Сохранить как диалоговом окне выберите папку и имя для нового файла, выберите PDF в Сохранить как раскрывающийся список, затем щелкните Параметры.

doc экспорт выбранной страницы в pdf 3

3. в Параметры диалог, проверьте Выбор , нажмите OK , чтобы вернуться к Сохранить как Диалог.

4. Нажмите Сохраните.

Экспорт выбранных страниц в PDF с помощью VBA

Если вы знакомы с кодом макроса, вы можете попробовать ниже VBA.

1. Выберите содержимое, которое вы хотите сохранить как один PDF-файл, нажмите Alt + F11 ключ для открытия Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модульскопируйте и вставьте приведенный ниже код в Модуль скрипты.

VBA: экспорт выделенного в PDF

doc экспорт выбранной страницы в pdf 4

3. Нажмите F5 ключ для запуска кода. В появившемся диалоговом окне выберите папку для размещения нового файла.

doc экспорт выбранной страницы в pdf 5

4. Нажмите OK, появится диалоговое окно, в котором можно указать имя файла.

5. Нажмите OK. Новый файл откроется автоматически после успешного сохранения.

Примечание: Выбранные вами страницы должны быть последовательными.

Экспорт выбранных страниц в PDF с помощью Kutools for Word

Если вы хотите экспортировать выбранные страницы в PDF или другие типы файлов, вы можете использовать Диапазон экспорта в файл полезности Kutools for Word.

После установки Kutools for Word, сделайте, как показано ниже: (Бесплатная загрузка Kutools for Word прямо сейчас!)

doc экспорт выбранной страницы в pdf 6

1. Выберите содержимое, щелкните Kutools Plus > Экспорт / Импорт > Диапазон экспорта в файл.

doc экспорт выбранной страницы в pdf 7

2. в Диапазон экспорта в файл диалоговом окне выберите папку для сохранения файла PDF в Сохранить путь раздел, затем проверьте PDF-файл или другой тип файла, который вам нужен Тип файла раздел, в Параметры файла раздел, отметьте нужный вариант.

doc экспорт выбранной страницы в pdf 8

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 – как в ворде сохранить документ

сохранение в word документа

Save (NoPrompt, OriginalFormat) – Метод выполняет ту же функцию, что и Save объекта Document, только для коллекции Documents.

Хорошо, с теорией закончили, теперь привожу два примера программного кода на языке VBScript и JScript, котрые создают новый документ, вставляют в него форматированный текст, содержащий информацию о сервере сценариев Windows Script Host и сохраняют в ворде данный документ в текущем каталоге (каталог, откуда был произведен запуск сценария).

Программный код на языке VBSCRIPT:

сохранение файла в Word

Программный код на языке 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 как pdf

По умолчанию, само приложение Word не позволяет сохранять документы в заданных форматах (исключением являются последние версии), что немного обидно, учитывая функциональные возможности самой компании Майкрософт. Но это и не удивительно, так как дядюшка Билл любит радовать своего потребителя различными косяками и багами – каких только нецензурных слов удостоился тот же Internet Explorer .

В первую очередь, стоит сообщить хорошую новость – есть расширение "SaveAsPDFandXPS", которое находится в бесплатном доступе и его можно скачать с официального сайта Майкрософт. После установки данного расширения появляется возможность сохранить страницу как PDF в Word документе, причем, как в ручном режиме (соответствующий тип файла появится в диалоговом окне "Сохранить Как"), так и программным путем.

Собственно, программный метод получения формата pdf мы и рассмотрим, а именно, метод ExportAsFixedFormat объекта Range, который позволяет экспортировать целиком или частично содержимое документа в нужный формат.

Данный метод содержит много параметров, и поэтому, я решил описать его в отдельной статье.

сохранение докумнта word в pdf

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.

как сохранить документ word в pdf

Программный код на VBSCRIPT:

как сохранить файл ворд в пдф

Программный код на JSCRIPT:

Сами сценарии сохраняют документ Word в формате PDF в текущем каталоге, то есть, в каталоге, из которого произошел запуск сценария. Две функции LRange и TXInsert позволяют выбрать нужный диапазон текста (точнее нужные абзацы) и применить форматирование текста (тип шрифта и размер). Метод SaveAs также позволяет сохранить документ Word в PDF формате или в любом другом формате, данный метод принадлежит объекту Document. Более детально похожий пример я рассмотрел в этой статье.

Спасибо за внимание. Автор блога Владимир Баталий

Читайте также: