Перетворення Excel у PDF за допомогою VBA - єдиний посібник, який вам знадобиться

*Це гостьова публікація Райана Уеллса, колеги -блогера та блискучого розробника VBA.*

Якщо ви працюєте з Excel, вас, безсумнівно, попросили створити короткий зміст своєї роботи.

Звіти про продажі, рахунки -фактури, прогнози, розклади, як завгодно.

Знаєте, що спільного у всіх цих документах? Вони чудово виглядають у форматі PDF. Знаєте, що ще? Керівництво любить PDF -файли!

Перетворення Excel у PDF

У цьому підручнику я покажу вам, як за допомогою Excel VBA конвертувати всі види об’єктів Excel у PDF:

Я збираюся представити кожен з макросів певним коментарем. Таким чином, ви зможете швидко їх знайти, скопіювати у редактор VBA та використовувати.

Коли ви запускаєте будь -який з цих макросів, з’явиться діалогове вікно Зберегти як із запитанням, де ви хочете зберегти PDF. Назва за замовчуванням включає дату та час, коли ви виконували макрос у форматі рррр. Ммдд_ххммсс.

Давайте перейдемо прямо до цього.

Ось макроси:

Друк виділеного файлу у форматі PDF

Цей мій особистий фаворит. Цей макрос перетворить вибрані вами клітинки у PDF.

Якщо у вас вибрано лише одну клітинку, макрос VBA досить розумний, щоб усвідомити, що ви, ймовірно, не хочете конвертувати лише одну клітинку, тому він просить вас вибрати діапазон, який потрібно конвертувати:

Sub PrintSelectionToPDF () 'ПІДПРОГРАММА: PrintSelectionToPDF' РОЗВИТОК: ОПИС Райана Уеллса: Роздрукуйте вибраний вами діапазон у PDF. "Виберіть діапазон", "Отримайте діапазон", Тип: = 8) В іншому випадку встановіть це Rng = Виділення закінчиться, якщо "Запит на місце збереження strfile =" Виділення "&" _ "_ & Формат (Зараз ()," рррр ммдд_ххммсс ") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Файли PDF ( *.pdf), *.pdf", _ Назва: = "Виберіть назву папки та файлу для збереження у форматі PDF") Якщо мій файл "False" Тоді "збережіть як PDF ThisRng.ExportAsFixedFormat Тип: = xlTypePDF, Ім'я файлу: = _ myfile, Якість: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = True, _ IgnorePrintAreas: False, OpenAfterPublish: = True Else MsgBox "Файл не вибрано. PDF не буде збережено", vbOKOnly, "Файл не вибрано" Закінчити, якщо закінчити Sub

Вибравши діапазон і натиснувши кнопку ОК, він відкриє діалогове вікно, у якому можна вибрати місце, де потрібно зберегти PDF.

Він автоматично вибере дату та час із годинника вашої системи та додасть їх до назви файлу.

Друк однієї таблиці у форматі PDF

Багато досвідчених користувачів Excel зберігають свої дані в організованих таблицях. По суті, сам Суміт Бансал так любить таблиці Excel, що називає їх прихованим скарбом у Excel.

Цей макрос друкує обрану вами таблицю у форматі PDF. Коли ви запускаєте макрос, він запитує у вас назву таблиці, яку потрібно зберегти.

Sub PrintTableToPDF () 'ПІДПРОГРАММА: PrintTableToPDF' РОЗВИТОЧНИК: ОПИС Райана Уеллса: Роздрукувати таблицю за вашим вибором у PDF Dim strfile As String Dim myfile As Variant Dim strTable As String, r As Range Application.ScreenUpdating = False 'Увійдіть у таблицю ім'я, яке ви хочете зберегти strTable = InputBox ("Як називається таблиця, яку потрібно зберегти?", "Введіть ім'я таблиці") 'Таблиця, яку потрібно зберегти Якщо Trim (strTable) = "" Тоді Вийти із запиту "Зберегти" location strfile = strTable & "_" _ & Format (Now (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Файли PDF ( *.pdf), *.pdf", _ Title: = "Виберіть папку та назву файлу для збереження у форматі PDF") Якщо мій файл "False" Тоді "збережіть як діапазон PDF (strTable) .ExportAsFixedFormat Тип : = xlTypePDF, Ім'я файлу: = myfile, Якість: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "Файл не вибрано. PDF не буде вибрано. збережено ", vbOKOnly," Не вибрано файл "Закінчити, якщо Application.DisplayAlerts = False LetsContinue: З додатком .ScreenUpdating = True .DisplayAlerts = True End з виходом Sub End Sub

Після того, як ви введете назву таблиці та натисніть кнопку OK, перед вами відкриється діалогове вікно, у якому ви можете вибрати місце, де потрібно зберегти PDF.

Він автоматично вибере дату та час із годинника вашої системи та додасть їх до назви файлу.

Роздрукуйте всі таблиці для окремих файлів PDF

Якщо у вашій таблиці є кілька таблиць, і вам потрібно зберегти кожну в окремому PDF -файлі, ви можете запустити цей код VBA.

Коли ви запускаєте цей макрос, з'явиться діалогове вікно з проханням вибрати папку, де ви хочете зберегти PDF -файли.

Після вибору папки макрос зберігатиме кожну таблицю у форматі PDF із назвою таблиці, яка зручно відображатиметься у заголовку PDF.

Sub PrintAllTablesToPDFs () 'ПІДПРОГРАММА: PrintAllTablesToPDFs' РОЗВИТОЧНИК: ОПИС Райана Уеллса: Друк кожної таблиці у вашій таблиці в іншому PDF Dim Як варіант Dim tbl Як ListObject Dim sht Як робочий аркуш із Application.FileDialog (msoFileDialogFolderPicker) .Title = "Де ви хочете зберегти свій PDF?" .ButtonName = "Зберегти" .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Name &""_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Тип: = xlTypePDF, Назва файлу: = _ мій файл, Якість : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Next tbl Next sht End Sub

Роздрукуйте всі аркуші в одному PDF

Я не знаю про вас, але в моїй роботі ми повинні зберігати копії PDF майже всіх наших електронних таблиць. Ми додаємо копії електронних таблиць у форматі PDF до розрахунків проектування. Раніше ці PDF-файли перетворювалися на мікрофіші та були сховані для тривалого зберігання. Знаєте, на випадок, якщо стався апокаліпсис.

Якщо ви опинилися в подібній ситуації, приємно мати можливість автоматично перетворювати всі аркуші у вашій таблиці в один PDF. Ось макрос VBA, який буде робити саме це:

Sub PrintAllSheetsToPDF () 'ПІДПРОГРАММА: PrintAllSheetsToPDF' РОЗРОБНИК: ОПИС Райана Уеллса: Об'єднайте всі свої робочі аркуші в один PDF Dim strSheets () As String Dim strfile As String Dim sh As Worksheet Dim icount As Integer Dim myfile Sheet As Variant до масиву для кожного sh в ActiveWorkbook.Worksheets Якщо sh.Visible = xlSheetVisible Тоді ReDim Збереже strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 End If Next sh If icount = 0 Тоді 'Ніяких діаграм не знайдено. Помилка перфорації MsgBox "PDF -файл неможливо створити, оскільки не знайдено аркушів.",, "Не знайдено жодного аркуша" Вийти з допоміжного кінця Якщо "Запит на місце збереження strfile =" Аркуші "&" _ "_ & Форматувати (Зараз ()," yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" PDF -файли ( *.pdf), *.pdf ", _ Title: = "Виберіть папку та назву файлу для збереження у форматі PDF") Якщо мій файл "False" Тоді "збережіть як PDF ThisWorkbook.Sheets (strSheets). Виберіть ActiveSheet.ExportAsFixedFormat Тип: = xlTypePDF, Ім'я файлу: = _ myfile, Якість: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True В іншому MsgBox "Файл не вибрано. PDF не буде збережено", vbOKOnly, "Не вибрано файл" Завершити, якщо закінчити суб

Друк аркушів діаграм у PDF

Цей макрос перетворює всі ваші таблиці діаграм в один PDF - але не об’єкти діаграми! Під аркушами діаграм я маю на увазі діаграми, які мають власну вкладку у вашому списку вкладок електронних таблиць:

Sub PrintChartSheetsToPDF () 'ПІДПРОГРАММА: PrintChartSheetsToPDF' РОЗВИТОЧНИК: ОПИС Райана Уеллса: Об'єднайте всі аркуші діаграми в один PDF Dim strSheets () As String Dim strfile As String Dim ch As Object, sh As Worksheet Dim as As Integer Dim my Зберегти імена аркушів діаграм у масиві для кожного каналу в ActiveWorkbook.Charts ReDim Зберегти strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 Next ch Якщо icount = 0 Тоді "Діаграм не знайдено. Помилка перфорації MsgBox "PDF -файл неможливо створити, тому що не знайдено аркушів діаграм.",, "Таблиць діаграм не знайдено" Вийти з допоміжного кінця Якщо "Запит на місце збереження strfile =" Діаграми "&" _ "_ & Форматувати (Зараз () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "Файли PDF ( *.pdf), *.pdf ", _ Title: =" Виберіть папку та назву файлу для збереження у форматі PDF ") Якщо мій файл" False "Тоді" збережіть як PDF ThisWorkbook.Sheets (strSheets). Виберіть ActiveSheet.ExportAsFixedFormat Тип: = xlTypePDF, Ім'я файлу: = _ мій файл, Якість: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True В іншому MsgBox "Файл не вибрано. PDF не буде збережено", vbOKOnly, "Не вибрано файл" Закінчити, якщо закінчиться Sub

Друк об’єктів діаграми у форматі PDF

Цей макрос зберігає всі ваші звичайні діаграми - об’єкти діаграм - в одному PDF -файлі. Незалежно від того, на якому аркуші є ваша діаграма, її буде захоплено та збережено у PDF.

У кінцевому PDF -файлі буде лише одна діаграма на сторінку.

Sub PrintChartsObjectsToPDF () 'ПІДПРОГРАММА: PrintChartsObjectsToPDF' РОЗВИТОЧНИК: ОПИС Райана Уеллса: Об'єднайте всі об'єкти діаграми в один PDF Dim ws як робочий аркуш, wsTemp як робочий аркуш Dim chrt як ChartObject Dim tp як довгий dimp файл = False Set wsTemp = Sheets.Add tp = 10 With wsTemp Для кожного ws В ActiveWorkbook.Worksheets Якщо ws.Name = wsTemp.Name Тоді Перейти до наступного: Для кожного chrt У ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 Якщо Selection.TopLeftCell.Row> 1 Тоді ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual End Якщо tp = tp + Selection.Height + 50 Next ws Закінчити з 'Запит на збереження місцезнаходження strfile = "Діаграми" & "_" _ & Формат Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "PDF -файли ( *.pdf), *.pdf", _ Назва: = "Вибрати фол der та ім'я файлу для збереження у форматі PDF ") Якщо мій файл False Тоді" зберегти як PDF wsTemp.ExportAsFixedFormat Тип: = xlTypePDF, Ім'я файлу: = myfile, Якість: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, = False, = False, = False, = False, Справжній "Інший" MsgBox "Файл не вибрано. PDF не буде збережено ", vbOKOnly," Файл не вибрано "Закінчити, якщо Application.DisplayAlerts = помилково wsTemp.Delete з додатком .ScreenUpdating = True .DisplayAlerts = True End з виходом Sub End Sub

Якщо у вас є запитання, задайте їх у розділі коментарів, де ми з Раяном чекатимемо на вас.

Вам також можуть сподобатися такі підручники Excel:

  • Як вставити PDF -файл у аркуш Excel.
  • Цикли Excel VBA: для наступного, Do While, Do Until, для кожного (з прикладами).
  • Як записати макрос в Excel
  • Як об’єднати кілька робочих книг в одну книгу Excel.
  • Як запустити макрос в Excel.
  • Як створити та використовувати надбудову Excel.
  • Обробка помилок Excel VBA
  • Розділіть кожен аркуш Excel на окремі файли
  • Як імпортувати XML -файл у Excel | Перетворення XML в Excel

Про автора: Райан Уеллс - інженер -ядерник та професійний розробник VBA. Він публікує свої зрозумілі підручники Excel VBA, щоб допомогти іншим писати кращі макроси. Окрім викладання VBA, Райан є провідним розробником кількох надбудов Excel. Ви можете знайти його підручники на WellsR.com.

Ви допоможете розвитку сайту, поділившись сторінкою з друзями

wave wave wave wave wave