Сохранение excel в pdf vba
При работе в Microsoft Excel вы можете столкнуться с проблемой сохранения активного рабочего листа в виде файла PDF. В этой статье вы можете узнать, как сохранить активный рабочий лист в виде файла PDF с кодом VBA с помощью командной кнопки. И если вы также хотите сохранить диапазон или каждый рабочий лист в активной книге как отдельный файл PDF, эта статья также может вам помочь.
Используйте командную кнопку, чтобы сохранить активный рабочий лист как файл PDF с кодом VBA
Вы можете запустить следующий код VBA, чтобы сохранить активный рабочий лист в виде файла PDF, нажав кнопку Command. Пожалуйста, сделайте следующее.
1. Во-первых, вам необходимо создать папку с именем PDF для сохранения вашего нового преобразованного файла PDF. Здесь я создаю эту папку на моем локальном диске (C :).
2. Вставьте командную кнопку, нажав разработчик > Вставить > Командная кнопка (элемент управления ActiveX). Смотрите скриншот:
2. Затем нарисуйте командную кнопку на листе, в котором вам нужно добавить новые строки, щелкните правой кнопкой мыши кнопку и нажмите Свойства из контекстного меню.
3. в Свойства диалоговом окне введите отображаемый текст командной кнопки в поле Подпись поле под Категории вкладку, а затем закройте диалоговое окно.
Вы можете видеть, что отображаемый текст кнопки управления изменен, как показано ниже.
4. Снова щелкните правой кнопкой мыши командную кнопку, а затем щелкните Просмотреть код из контекстного меню.
5. В дебюте Microsoft Visual Basic для приложений в окне кода замените исходный код в окне кода следующим кодом VBA.
Код VBA: кнопка управления для сохранения активного листа в формате PDF
Внимание: В коде CommandButton1 - это имя командной кнопки, которую вы будете использовать для сохранения активного листа в виде файла PDF. «C: \ PDF \ Export.pdf» - это путь и имя вашего сохраняемого файла PDF.
6. нажмите другой + Q клавиши одновременно, чтобы закрыть Microsoft Visual Basic для приложений окно. Затем выключите Режим проектирования под разработчик меню.
Теперь нажмите кнопку Command, активный рабочий лист будет сохранен в виде файла PDF с именем «Экспорт» и расположен в указанном месте.
Сохраните каждый рабочий лист как отдельный PDF-файл активной книги с помощью Kutools for Excel
Здесь рекомендую Разделить книгу полезности Kutools for Excel чтобы легко сохранить активный рабочий лист в виде файла PDF. Кроме того, с помощью этой утилиты вы также можете сохранить каждый рабочий лист в текущей книге как отдельный файл PDF.
Перед применением Kutools for Excel, Пожалуйста, сначала скачайте и установите.
1. В книге вам необходимо сохранить каждый лист как отдельный файл PDF, затем щелкнуть Kutools Plus > Workbook > Разделить книгу. Смотрите скриншот:
2. в Разделить книгу диалоговое окно, настройте следующим образом:
2.1) Проверяйте только имя активного листа в Имя рабочего листа коробка; 2.2) Выбрать PDF (* .pdf) из файла Сохранить как раскрывающийся список; 2.3) Нажмите Трещина кнопку, затем Выбор папки появится диалоговое окно, укажите папку для сохранения файла PDF;
Затем выбранный рабочий лист сразу сохраняется как файл PDF.
Заметки:
1. Вы можете отметить несколько имен рабочих листов в поле Имя рабочего листа, чтобы сохранить их как отдельный файл pdf одновременно; 2. За исключением сохранения рабочего листа в виде файлов PDF, вы можете сохранять рабочие листы в формате txt. или csv. файл как вам нужно.Если вы хотите получить 30-дневную бесплатную пробную версию этой утилиты, пожалуйста, нажмите, чтобы загрузить это, а затем перейдите к применению операции в соответствии с указанными выше шагами.
Метод ExportAsFixedFormat сохраняет рабочую книгу Excel или выбранную группу листов этой книги в один PDF-файл. Чтобы экспортировать каждый лист в отдельный файл, необходимо применить метод ExportAsFixedFormat к каждому сохраняемому листу.
Синтаксис
Expression . ExportAsFixedFormat ( Type , FileName , Quality , IncludeDocProperties , IgnorePrintAreas , From , To , OpenAfterPublish , FixedFormatExtClassPtr )Expression – это выражение, представляющее объект Workbook, Worksheet или Range.
Параметры
Единственный обязательный параметр – Type, остальные можно не указывать – в этом случае будут применены значения по умолчанию.
Параметр | Описание |
---|---|
Type | Задает формат файла для экспорта книги или листа: xlTypePDF(0) – сохранение в файл PDF; xlTypeXPS(1) – сохранение в файл XPS*. |
FileName | Задает имя файла. При указании полного пути, файл будет сохранен в указанную папку, при указании только имени – в папку по умолчанию (в Excel 2016 – «Документы»). Если имя не задано (по умолчанию), файл будет сохранен с именем экспортируемой книги. |
Quality | Задает качество сохраняемых электронных таблиц: xlQualityMinimum(1) – минимальное качество; xlQualityStandard(0) – стандартное качество (по умолчанию). |
IncludeDocProperties | Включение свойств документа Excel в PDF: True(1) – включить; False(0) – не включать; мне не удалось обнаружить разницу и значение по умолчанию. |
IgnorePrintAreas | Указывает VBA, следует ли игнорировать области печати, заданные на листах файла Excel: True(1) – игнорировать области печати; False(0) – не игнорировать области печати (по умолчанию). |
From** | Задает номер листа книги Excel, с которого начинается экспорт. По умолчанию сохранение в PDF начинается с первого листа книги. |
To** | Задает номер листа книги Excel, на котором заканчивается экспорт. По умолчанию сохранение в PDF заканчивается на последнем листе книги. |
OpenAfterPublish | Указывает VBA на необходимость открыть созданный файл PDF средством просмотра: True(1) – открыть файл PDF для просмотра; False(0) – не открывать файл PDF для просмотра (по умолчанию). |
FixedFormatExtClassPtr | Указатель на класс FixedFormatExt (игнорируем этот параметр). |
* XPS – это редко использующийся фиксированный формат файлов, разработанный Microsoft, который похож на PDF, но основан на языке XML.
** Применимо только к книге (Workbook.ExportAsFixedFormat), при экспорте листа (Worksheet.ExportAsFixedFormat) указание параметров From и/или To приведет к ошибке.
Примеры экспорта в PDF
Сохранение в PDF книги Excel
Экспорт всей книги
ThisWorkbook . ExportAsFixedFormat Type : = xlTypePDF , Filename : = "C:\Test\file1.pdf" , OpenAfterPublish : = TrueЕсли вы указываете путь к файлу, он должен существовать, иначе VBA сохранит файл с именем и в папку по умолчанию («ИмяКниги.pdf» в папку «Документы»).
Экспорт части книги
Этот способ позволяет сохранить в PDF группу листов, расположенных подряд:
Если вы часто пользуетесь Microsoft Excel, вы должны использовать в нем функцию «Сохранить как», которая позволяет сохранять открытую в настоящий момент книгу с другим именем или другим форматом (Excel Macro-enabled, CSV, PDF и т. Д.). Вы также можете сохранить файл в другой папке, используя этот метод. Однако возможно ли использовать ту же функцию под VBA? Ответ абсолютный Да! У нас также есть функция «Сохранить как» в VBA, которая помогает нам выполнять все вышеупомянутые задачи наряду с некоторыми дополнительными преимуществами (очевидно, автоматизация - одно из преимуществ). В этой статье мы рассмотрим различные примеры функции VBA SAVE AS.
Формула для функции Сохранить как в Excel VBA
Давайте посмотрим ниже формулу для функции Сохранить как в VBA.
- FileName - имя книги, которую нужно сохранить.
- FileFormat - формат файла, в котором файл должен быть сохранен (напр. Pdf, CSV и т. Д.)
- Пароль - пароль для защиты рабочей книги (рабочая книга не может быть доступна без пароля)
- WriteResPassword - Напишите пароль бронирования для книги.
- ReadOnlyRecommended - распознает, сохранена ли книга в формате только для чтения или нет.
- CreateBackup - определяет, создан ли файл резервной копии для книги.
- AccessMode - распознает режим доступа к книге .
- ConflictResolution - распознает конфликты, возникающие, когда рабочая книга является общей и используется более чем одним пользователем.
- AddToMru - проверяет, добавлена ли рабочая книга в недавно использованный файл или нет.
- Локальный - Проверяет, сохранена ли рабочая книга с законами Excel (местный язык) или с законами VBA (США - английский).
Тише! Много аргументов, верно? Но что, если я скажу вам, все эти аргументы являются необязательными и могут быть пропущены при использовании функции VBA SAVE AS. Однако верно то, что именно эти аргументы делают VBA SaveAs более гибкой в использовании функцией. «Выражение» в начале синтаксиса - не что иное, как выражение, против которого можно использовать эту функцию. Like Workbook - это выражение, с которым можно использовать SaveAs.
Примеры сохранения файла Excel с помощью функции VBA Save As
Ниже приведены различные примеры сохранения файла Excel с использованием функции VBA Save As.
Вы можете скачать этот шаблон VBA Сохранить как Excel здесь - VBA Сохранить как шаблон Excel
Пример № 1 - Как сохранить копию рабочей книги с другим именем?
Давайте посмотрим, как мы можем сохранить текущую книгу под другим именем.
Чтобы использовать функцию «Сохранить как» в Excel VBA, выполните следующие действия:
Шаг 1. Добавьте новый модуль в редактор Visual Basic (VBE). Перейдите на Вставить и затем выберите Модуль.
Шаг 2: Определите новую подпроцедуру, которая может хранить макрос.
Код:
Шаг 3: Определите новую переменную, которая может содержать имя, под которым будет сохранен файл.
Код:
Шаг 4: Теперь используйте оператор присваивания, чтобы присвоить имя этой переменной, используя который текущий файл может быть сохранен как.
Код:
Шаг 5: Теперь используйте функцию SaveAs с аргументом FileName, чтобы сохранить файл с именем «Example1».
Код:
Шаг 6: Вот и все, теперь запустите этот код, нажав F5 или вручную, используя кнопку Run, и посмотрите вывод.
Вы можете видеть, что файл с именем « Пример1 » сохраняется в Документах .
Если бы вы могли записать, файл сохраняется как Macro-Enabled File, потому что исходный файл, на котором я использовал функцию SaveAs, это файл с Macro-Enabled. Это означает, что эта функция в VBA автоматически проверяет формат файла предыдущего файла и сохраняет его в том же формате. Также по умолчанию файл будет сохранен в Документах на этом ПК . Это местоположение по умолчанию может быть предоставлено явно во время определения имени листа.
Пример №2 - Сохранение книги с предоставленным пользователем именем
Вместо первоначального определения имени, можно ли написать код, который позволяет пользователю сохранять рабочий лист под именем по своему выбору, так же как функция Excel Save As?
Выполните следующие шаги, чтобы использовать функцию «Сохранить как» в Excel VBA.
Шаг 1: Определите новую подпроцедуру в недавно вставленном модуле, который может хранить макрос.
Код:
Шаг 2: Определите новую переменную, которая может содержать значение пользовательского имени.
Код:
Причина, по которой эта переменная определяется как Variant, заключается в том, что этот тип данных делает соглашения об именах универсальными. Например, пользователь может добавить некоторый дополнительный специальный символ (который разрешен в соглашениях об именах) или может также добавить даты под именем файла.
Шаг 3: Теперь с помощью оператора присваивания и комбинации функций, называемой application.GetSaveAsFilename, создайте оператор, который позволит системе принять определенное пользователем имя. Посмотрите, как это было достигнуто на скриншоте ниже.
Код:
Шаг 4: Используйте условный IF, чтобы убедиться, что имя, которое вводит пользователь, является действительным согласно соглашениям об именах.
Код:
Это условие проверяет, соответствует ли имя, данное пользователем для сохранения рабочего листа, правилам именования, установленным для именования файла, или нет.
Шаг 5: Запишите утверждение, которое оценивается для данного условия IF.
Код:
Этот фрагмент кода оценивается, когда условие IF выполнено. Если это так, активная рабочая книга будет сохранена под именем, определенным в переменной Spreadsheet_Name (которая будет определяться пользователем)
Шаг 6: Завершите цикл IF и запустите этот код, чтобы увидеть результат.
Код:
Шаг 7: Как только вы запустите этот код, вы получите диалоговое окно Сохранить как, которое позволит вам ввести имя по вашему выбору и сохранить файл.
Пример № 3 - Как сохранить файл в формате PDF с помощью функции Excel VBA SaveAs?
Предположим, у вас есть данные, указанные ниже в вашей таблице Excel, и вам нужно преобразовать их в PDF.
Выполните следующие шаги, чтобы преобразовать этот файл в PDF с помощью функции VBA Сохранить как:
Шаг 1: Определите новую подпроцедуру для хранения макроса.
Код:
Шаг 2. Теперь используйте следующий код, чтобы сохранить этот файл в формате PDF.
Код:
Шаг 3: Запустите этот код, и вы увидите файл PDF, созданный в разделе «Этот ПК»> «Документы».
В этом коде ActiveSheet.SaveAs позволяет сохранить файл с тем же именем. Поскольку мы добавили расширение как .pdf в конец файла, оно экспортируется в файл PDF. Вы можете увидеть изображение выше для вашей справки.
То, что нужно запомнить
- По умолчанию местом сохранения файла, используемого в VBA SaveAs, будет Этот ПК> Документы. Тем не менее, вы можете указать каталог вручную во время определения имени файла.
- По умолчанию файл, сохраненный с помощью VBA SaveAs, будет сохранен в том же формате, что и исходный файл. Тем не менее, он также может быть определен в соответствии с требованиями пользователя во время определения переменной.
Рекомендуемые статьи
Это руководство к VBA Сохранить как. Здесь мы обсудим, как сохранить файл с помощью функции Excel VBA Save As вместе с примером и загружаемым шаблоном Excel. Ниже приведены несколько полезных статей о Excel, связанных с VBA.
Добрый день, участникам форума!
Тема не новая, но прежде чем обратиться перепробовал разные (возможно не все) варианты.
Давно работаю с одним макросом который сохраняет файл в Excel формате:
[vba]
Dim appDispAlert As Boolean
appDispAlert = Application.DisplayAlerts
Пытаюсь адаптировать под сохранение в PDF так:
Dim appDispAlert As Boolean
appDispAlert = Application.DisplayAlerts
Debug ругается на:
[vba]
Подскажите, пожалуйста, где ошибаюсь?
Добрый день, участникам форума!
Тема не новая, но прежде чем обратиться перепробовал разные (возможно не все) варианты.
Давно работаю с одним макросом который сохраняет файл в Excel формате:
[vba]
Dim appDispAlert As Boolean
appDispAlert = Application.DisplayAlerts
Пытаюсь адаптировать под сохранение в PDF так:
Dim appDispAlert As Boolean
appDispAlert = Application.DisplayAlerts
Debug ругается на:
[vba]
Подскажите, пожалуйста, где ошибаюсь? Anis625
Тема не новая, но прежде чем обратиться перепробовал разные (возможно не все) варианты.
Давно работаю с одним макросом который сохраняет файл в Excel формате:
[vba]
Dim appDispAlert As Boolean
appDispAlert = Application.DisplayAlerts
Пытаюсь адаптировать под сохранение в PDF так:
Dim appDispAlert As Boolean
appDispAlert = Application.DisplayAlerts
Debug ругается на:
[vba]
Подскажите, пожалуйста, где ошибаюсь? Автор - Anis625
Дата добавления - 07.06.2019 в 14:17
Получится примерно вот так
[vba] Запишите макрорекодером сохранение книги в ПДФ и посмотрите. Самый простой путь
Получится примерно вот так
[vba] [/vba] Автор - _Boroda_
Дата добавления - 07.06.2019 в 14:23
Не нарушая конструкции кода по формированию имени файла (т.к. этот код связан с другими кодами) попробовал заменить концовку:
ругается все равно на эту часть:
Не нарушая конструкции кода по формированию имени файла (т.к. этот код связан с другими кодами) попробовал заменить концовку:
ругается все равно на эту часть:
Не нарушая конструкции кода по формированию имени файла (т.к. этот код связан с другими кодами) попробовал заменить концовку:
ругается все равно на эту часть:
[/vba] Автор - Anis625Дата добавления - 07.06.2019 в 14:29 Может Вы все-таки напишете как ругается?
Что такое Ws_Dest?
Как Вы вызываете функцию?
Что такое для нее str?
Зачем там msg?
Где кусок Type?
Чтобы всех этих вопросов не было, нужно файл прикладывать Может Вы все-таки напишете как ругается?
Что такое Ws_Dest?
Как Вы вызываете функцию?
Что такое для нее str?
Зачем там msg?
Где кусок Type?
Чтобы всех этих вопросов не было, нужно файл прикладывать _Boroda_ [/vba] Автор - _Boroda_
Дата добавления - 07.06.2019 в 16:21
ругается
желтым выделяет первую строку:
[vba]
ругается
желтым выделяет первую строку:
[vba]
ругается
желтым выделяет первую строку:
[vba]
Дата добавления - 07.06.2019 в 16:37
нашел свой старый рабочий файл, в котором из Excel вывожу в PDF:
[vba]
Application.ScreenUpdating = True
MsgBox "ГОТОВО!" & vbCrLf & "Excel файл тоже необходимо прикрепить в СЭД", vbInformation
End Sub
попробовал его адаптировать под текущую задачу - не срабатывает =(
нашел свой старый рабочий файл, в котором из Excel вывожу в PDF:
[vba]
Application.ScreenUpdating = True
MsgBox "ГОТОВО!" & vbCrLf & "Excel файл тоже необходимо прикрепить в СЭД", vbInformation
End Sub
попробовал его адаптировать под текущую задачу - не срабатывает =( Anis625
нашел свой старый рабочий файл, в котором из Excel вывожу в PDF:
[vba]
Application.ScreenUpdating = True
MsgBox "ГОТОВО!" & vbCrLf & "Excel файл тоже необходимо прикрепить в СЭД", vbInformation
End Sub
попробовал его адаптировать под текущую задачу - не срабатывает =( Автор - Anis625
Дата добавления - 08.06.2019 в 08:57
Дата добавления - 15.06.2019 в 01:27
Читайте также: