המרת Excel ל- PDF באמצעות VBA - המדריך היחיד שתזדקק לו

תוכן העניינים

*זהו פוסט אורח של ריאן וולס, עמית בלוגר ומפתח VBA מבריק.*

אם אתה עובד עם Excel, אין ספק שהתבקשת ליצור סיכומים של עבודתך.

דוחות מכירה, חשבוניות, תחזיות, לוחות זמנים, תן שם.

אתה יודע מה משותף לכל המסמכים האלה? הם נראים נהדר בצורת PDF. אתה יודע מה עוד? ההנהלה אוהבת מסמכי PDF!

המרת אקסל ל- PDF

במדריך זה אראה לך כיצד להשתמש ב- Excel VBA להמרת כל מיני אובייקטים של Excel למסמכי PDF:

אני עומד להציג לכל אחד מאקרו כמה פירושים. כך תוכל למצוא אותם במהירות, להעתיק אותם לעורך ה- VBA שלך ולהשתמש בהם.

כאשר אתה מפעיל אחת מאקרו המאקרו האלה, תופיע תיבת דו -שיח שמירה בשם ושואלת אותך היכן ברצונך לשמור את קובץ ה- PDF שלך. שם ברירת המחדל כולל את תאריך וחותמת הזמן שבה הפעלת את המאקרו בפורמט yyyymmdd_hhmmss.

בואו ניגש לזה.

להלן המאקרו:

הדפס את הבחירה ל- PDF

זו האהובה האישית שלי. מאקרו זה יהפוך את התאים שבחרת באופן פעיל למסמך PDF.

אם נבחר רק תא אחד, מאקרו ה- VBA חכם מספיק כדי להבין שכנראה אינך רוצה להמיר תא אחד בלבד ולכן הוא מבקש ממך לבחור את הטווח שברצונך להמיר:

תת PrintSelectionToPDF () 'SUBROUTINE: PrintSelectionToPDF' מפתח: DESCRIPTION של ריאן וולס: הדפס את הטווח הנבחר כרגע ל- PDF Dim ThisRng כטווח Dim strfile As String Dim myfile as Variant If Selection.Count = 1 ואז הגדר ThisRng = Application.InputBox ( "בחר טווח", "קבל טווח", סוג: = 8) אחר הגדר ThisRng = בחירה סיום אם 'בקשה לשמירת מיקום strfile = "בחירה" & "_" _ & פורמט (עכשיו (), "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "קבצי PDF ( *.pdf), *.pdf", _ כותרת: = "בחר תיקייה ושם קובץ לשמירה כקובץ PDF") אם קובץ my "False" לאחר מכן 'שמור כ- PDF ThisRng.ExportAsFixedFormat Type: = xlTypePDF, שם קובץ: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = אחר אחר MsgBox "לא נבחר קובץ. קובץ PDF לא יישמר", vbOKOnly, "אין קובץ שנבחר" סוף אם קצה משנה

לאחר שתבחר את הטווח ותלחץ על אישור, הוא יציג תיבת דו -שיח שבה תוכל לבחור היכן ברצונך לשמור את קובץ ה- PDF.

הוא יבחר אוטומטית את התאריך והשעה משעון המערכת שלך ויוסיף אותו לשם הקובץ.

הדפס טבלה אחת ל- PDF

הרבה משתמשי כוח Excel שומרים את הנתונים שלהם בטבלאות מסודרות. למעשה, סומית בנסאל עצמו אוהב כל כך טבלאות אקסל שהוא מכנה אותם אוצר מוסתר באקסל.

מאקרו זה מדפיס טבלה לבחירתכם לקובץ PDF. כאשר אתה מפעיל את המאקרו, הוא יבקש ממך את שם הטבלה שברצונך לשמור.

תת PrintTableToPDF () 'SUBROUTINE: PrintTableToPDF' מפתח: תיאור ריאן וולס: הדפס טבלה לבחירתך לקובץ PDF Dim Dim As String Dim myfile כ- Variant Dim strTable As String, r כיישום טווח. 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") אם קובץ my "False" לאחר מכן שמור כטווח PDF (strTable). : = xlTypePDF, שם קובץ: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfterPublish: = True אחר MsgBox "אין קובץ שנבחר. קובץ PDF לא יהיה שמור ", vbOKOnly," אין קובץ שנבחר "סוף אם Application.DisplayAlerts = False LetsContinue: With Application .ScreenUpdating = True .DisplayAlerts = סוף אמת עם יציאה משנה

לאחר שתזין את שם הטבלה ולחץ על אישור, היא תציג תיבת דו -שיח שבה תוכל לבחור היכן ברצונך לשמור את קובץ ה- PDF.

הוא יבחר אוטומטית את התאריך והשעה משעון המערכת שלך ויוסיף אותו לשם הקובץ.

הדפס את כל הטבלאות להפרדת קובצי PDF

אם בגיליון האלקטרוני שלך יש מספר טבלאות ואתה צריך לשמור כל אחת מהן בקובץ PDF נפרד, תוכל להריץ את קוד ה- VBA הזה.

כאשר אתה מפעיל מאקרו זה, תופיע תיבת דו -שיח שתבקש ממך לבחור את התיקיה שבה ברצונך לשמור את קובצי ה- PDF שלך.

לאחר שתבחר בתיקייה שלך, המאקרו ישמור כל טבלה ל- PDF כאשר שם הטבלה יופיע בנוחות בכותרת ה- PDF.

תת PrintAllTablesToPDFs () 'SUBROUTINE: PrintAllTablesToPDFs' DEVELOPER: Ryan Wells 'תיאור: הדפס כל טבלה בגיליון האלקטרוני שלך ל- PDF Dim Dim strTables () As String Dim stril As String Dim ch כאובייקט, sh כגיליון עבודה Dim icount as Integer Dim myfile כ- Variant Dim tbl As ListObject Dim sht כגיליון עבודה עם Application.FileDialog (msoFileDialogFolderPicker) .Title = "היכן ברצונך לשמור את קובץ ה- PDF שלך?" .ButtonName = "שמור כאן" .InitialFileName = ThisWorkbook.Path If .Show = -1 ואז 'אם נלחץ אישור sfolder = .SelectedItems (1) אחר סוף סוף אם סוף עם כל sht ב- ThisWorkbook.Worksheets עבור כל tbl ב- sht .ListObjects myfile = ThisWorkbook.Name & ""& tbl.Name &""_ & Format (Now ()," yyyymmdd_hhmmss ") _ &" .pdf "myfile = sfolder &" \ "& myfile sht.Range (tbl.Name) .ExportAsFixedFormat Type: = xlTypePDF, שם קובץ: = _ myfile, Quality : = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Next tbl Next sht End Sub Sub

הדפס את כל הגיליונות ל- PDF אחד

אני לא יודע מה איתכם, אבל במסגרת העבודה שלי, עלינו לשמור עותקי PDF של כמעט כל הגיליונות האלקטרוניים שלנו. אנו מצרפים את עותקי ה- PDF של הגיליונות האלקטרוניים שלנו לחישובי העיצוב שלנו. מסמכי PDF אלה הופכו בעבר למיקרו-פיצ'ה וקמרו לשמירה לטווח ארוך. אתה יודע, במקרה שהאפוקליפסה קרתה.

אם אתה מוצא את עצמך במצב דומה, נחמד להיות מסוגל להמיר אוטומטית את כל הגיליונות בגיליון האלקטרוני שלך ל- PDF אחד. להלן מאקרו של VBA שיעשה בדיוק את זה:

Sub PrintAllSheetsToPDF () 'SUBROUTINE: PrintAllSheetsToPDF' מפתח: ריאן וולס 'תיאור: שלב את כל דפי העבודה שלך ל- PDF Dim str strheets () כמחרוזת Dim Dimfil As String Dim sh כגיליון Dim Dimount כמספר שלם Dim myfile בתור משתנה' שמור גליונות תרשים למערך עבור כל sh ב- ActiveWorkbook.Worksheets אם sh.Visible = xlSheetVisible ואז ReDim Preserve strSheets (icount) strSheets (icount) = sh.Name icount = icount + 1 סוף אם הבא sh אם icount = 0 ואז 'לא נמצאו תרשימים. שגיאת אגרוף MsgBox "לא ניתן ליצור קובץ PDF מכיוון שלא נמצאו גיליונות.",, "לא נמצאו גיליונות" צא מקצה משנה אם 'בקשה לשמירת מיקום strfile = "Sheets" & "_" _ & Format (Now (), " yyyymmdd_hhmmss ") _ &" .pdf "strfile = ThisWorkbook.Path &" \ "& strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: =" קבצי PDF ( *.pdf), *.pdf ", _ Title: = "בחר תיקייה ושם קובץ לשמירה כקובץ PDF") אם קובץ my "False" אז שמור כ- PDF ThisWorkbook.Sheets (strSheets). בחר ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, שם קובץ: = _ myfile, איכות: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "לא נבחר קובץ. קובץ PDF לא יישמר", vbOKOnly, "אין קובץ שנבחר" סוף אם סוף משנה

הדפס גיליונות תרשים ל- PDF

מאקרו זה ממיר את כל גליונות התרשים שלך ל- PDF אחד - אך לא לאובייקטים התרשים שלך! בגליונות תרשימים, אני מתכוון לתרשימים שיש להם כרטיסייה משלהם ברשימת הכרטיסיות של גיליונות אלקטרוניים:

תת PrintChartSheetsToPDF () 'SUBROUTINE: PrintChartSheetsToPDF' מפתח: ריאן וולס 'תיאור: שלב את כל גיליונות התרשים לכדי PDF Dim Dim strSheets () כמחרוזת Dim Dimfil כמחרוזת Dim ch כאובייקט, sh כגיליון גודל Dim כמספר שלם Dim myfile בתור גרסה' שמור שמות גיליונות תרשים במערך עבור כל צ'ב- ActiveWorkbook.Charts ReDim Preserve strSheets (icount) strSheets (icount) = ch.Name icount = icount + 1 הבא ch אם icount = 0 ואז 'לא נמצאו תרשימים. שגיאת אגרוף MsgBox "לא ניתן ליצור קובץ PDF מכיוון שלא נמצאו גליונות תרשים.", "לא נמצאו גיליונות תרשים" צא מקצה משנה אם 'בקשה לשמירת מיקום strfile = "תרשימים" & "_" _ & פורמט (עכשיו () , "yyyymmdd_hhmmss") _ & ".pdf" strfile = ThisWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "קבצי PDF ( *.pdf), *.pdf ", _ Title: =" בחר תיקייה ושם קובץ לשמירה כקובץ PDF ") אם קובץ my" False "אז שמור כ- PDF ThisWorkbook.Sheets (strSheets). בחר ActiveSheet.ExportAsFixedFormat Type: = xlTypePDF, שם קובץ: = _ myfile, Quality: = xlQualityStandard, IncludeDocProperties: = True, _ IgnorePrintAreas: = False, OpenAfterPublish: = True Else MsgBox "לא נבחר קובץ. PDF לא יישמר", vbOKOnly, "אין קובץ שנבחר" סוף אם סוף משנה

הדפס אובייקטים של תרשים ל- PDF

מאקרו זה שומר את כל התרשימים הרגילים שלך - אובייקטים של תרשים - לקובץ PDF יחיד. לא משנה באיזה גליון עבודה התרשים שלך נמצא, הוא יתפוס וישמר בקובץ PDF.

במסמך PDF הסופי יהיה רק ​​תרשים אחד לדף.

תת הדפסהChartsObjectsToPDF () 'SUBROUTINE: PrintChartsObjectsToPDF' מפתחים: ריאן וולס 'תיאור: שלב את כל אובייקטים של התרשים לכדי PDF Dim ws כגיליון עבודה, wsTemp כגיליון עבודה Dim chrt כ- ChartObject Dim tp כ- Dim strilile as מחרוזת Dim. = סט שגוי wsTemp = Sheets.Add tp = 10 With wsTemp עבור כל ws ב- ActiveWorkbook.Worksheets אם ws.Name = wsTemp.Name ואז GoTo nextws: For each chrt In ws.ChartObjects chrt.Copy wsTemp.Range ("A1") .PasteSpecial Selection.Top = tp Selection.Left = 5 If Selection.TopLeftCell.Row> 1 ואז ActiveSheet.Rows (Selection.TopLeftCell.Row) .PageBreak = xlPageBreakManual סוף אם tp = tp + Selection.Height + 50 הבא הבא: הבא ws סוף עם 'בקשה לשמירת מיקום strfile = "תרשימים" & "_" _ & פורמט (Now (), "yyyymmdd \ _hhmmss") _ & ".pdf" strfile = ActiveWorkbook.Path & "\" & strfile myfile = Application.GetSaveAsFilename _ (InitialFileName: = strfile, _ FileFilter: = "קובצי PDF ( *.pdf), *.pdf", _ Title: = "בחר Fol der ושם הקובץ לשמירה כקובץ PDF ") אם myfile False אז שמור כ- PDF wsTemp.ExportAsFixedFormat Type: = xlTypePDF, שם קובץ: = myfile, Quality: = xlQualityStandard, _ IncludeDocProperties: = True, IgnorePrintAreas: = False, OpenAfter True 'אחר' MsgBox "לא נבחר קובץ. קובץ PDF לא יישמר ", vbOKOnly," אין קובץ שנבחר "מסתיים אם Application.DisplayAlerts = False wsTemp.Delete With Application .ScreenUpdating = True .DisplayAlerts = True End עם יציאת משנה

אם יש לך שאלות, השאירו אותן בקטע ההערות, שם מחכים לכם ראיין ואני שם.

אולי תאהב גם את מדריכי האקסל הבאים:

  • כיצד להטביע קובץ PDF בגליון עבודה של Excel.
  • לולאות VBA של Excel: להבא, עשה בזמן, עשה עד, עבור כל אחת (עם דוגמאות).
  • כיצד להקליט מאקרו ב- Excel
  • כיצד לשלב חוברות עבודה מרובות לחוברת עבודה אחת של Excel.
  • כיצד להריץ מאקרו ב- Excel.
  • כיצד ליצור ולהשתמש בתוסף Excel.
  • טיפול בשגיאות VBA של Excel
  • חלוק כל גיליון Excel לקבצים נפרדים
  • כיצד לייבא קובץ XML לאקסל | המרת XML לאקסל

על הסופר: ריאן וולס הוא מהנדס גרעין ומפתח VBA מקצועי. הוא מפרסם את הדרכות קלות להבנה של Excel VBA כדי לעזור לאחרים לכתוב פקודות מאקרו טובות יותר. בנוסף ללמד VBA, ריאן הוא המפתח המוביל של מספר תוספות אקסל. אתה יכול למצוא את ההדרכות שלו באתר WellsR.com.

תוכל לעזור בפיתוח האתר, שיתוף הדף עם החברים שלך

wave wave wave wave wave