Cách chuyển file Excel sang PDF sử dụng VBA

Nếu bạn làm việc trên phần mềm Excel, chắc chắn bạn cần phải tạo các bản tóm tắt công việc, chẳng hạn như báo cáo doanh thu, hóa đơn, tiến độ và các dự báo, đề xuất. Bạn có biết tất cả những tài liệu này có điểm chung gì không? Chúng đều sử dụng định dạng file PDF, bạn còn biết điểm chung gì khác? Các nhà quản lý đều rất thích file PDF!

cach chuyen file excel sang pdf su dung vba

Cách chuyển file Excel sang PDF sử dụng VBA

Chuyển đổi file Excel sang PDF bằng VBA

Trong bài viết này, chúng tôi sẽ hướng dẫn bạn cách sử dụng VBA Excel - viết tắt của Visual Basic for Applications, một ngôn ngữ lập trình tích hợp trong Excel - để chuyển đổi tất cả nội dung trong file Excel sang định dạng PDF. Bài hướng dẫn chuyển Excel sang PDF bao gồm: Chuyển ô tùy chọn sang PDF, Chuyển một bảng (Table) sang PDF, Chuyển tất cả bảng sang file PDF riêng biệt, Chuyển tất cả bảng tính (Spreadsheet) sang một file PDF, Chuyển bảng tính biểu đồ sang PDF và Chuyển đối tượng biểu đồ sang PDF.

Dưới đây, chúng tôi sẽ trình bày từng macro kèm theo một số chú thích, từ đó bạn có thể tìm chúng nhanh chóng, sao chép vào trình chỉnh sửa VBA của mình và sử dụng.

Khi bạn chạy một macro bất kỳ, hộp thoại Save As sẽ xuất hiện và hỏi bạn muốn lưu file PDF vào thư mục nào trong máy. Tên mặc định bao gồm ngày tháng và dấu thời gian (time stamp) khi bạn thực thi macro ở định dạng yyyymmdd_hhmmss (lần lượt là ngày tháng năm_giờ phút giây)

cach chuyen file excel sang pdf su dung vba

Dưới đây là các macro:

Chuyển ô tùy chọn sang PDF (Print Selection To PDF)

Macro này sẽ chuyển đổi các ô bạn đã chọn thành PDF. Nếu bạn chỉ chọn một ô, macro VBA đủ thông mình để nhận ra rằng có lẽ bạn không muốn chuyển một ô duy nhất vì thế nó sẽ đề nghị bạn lựa chọn phạm vi ô muốn chuyển đổi:

cach chuyen file excel sang pdf su dung vba 2

Sub PrintSelectionToPDF()
'SUBROUTINE: PrintSelectionToPDF
'DEVELOPER: Taimienphi.vn
'DESCRIPTION: Chuyển các ô được chọn sang PDF
Dim ThisRng As Range
Dim strfile As String
Dim myfile As Variant
If Selection.Count = 1 Then
Set ThisRng = Application.InputBox("Select a range", "Get Range", Type:=8)
Else
Set ThisRng = Selection
End If
'Dấu nhắc thư mục lưu
strfile = "Selection" & "_" _
& Format(Now(), "yyyymmdd_hhmmss") _
& ".pdf"
strfile = ThisWorkbook.Path & "\" & strfile
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Lựa chọn thư mục và tên file lưu thành PDF")
If myfile <> "False" Then 'save as PDF
ThisRng.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
myfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "Không có file được chọn. Không thể lưu file PDF", vbOKOnly, "Không có file được chọn"
End If
End Sub
 

Sau khi chọn phạm vi ô và nhấn OK, trên màn hình sẽ xuất hiện hộp thoại để bạn chọn thư mục muốn lưu file PDF. Chương trình sẽ tự động chọn thời gian và ngày tháng từ đồng hồ hệ thống và chèn vào tên file.

Chuyển một bảng sang PDF (Print One Table To PDF)

Rất nhiều người dùng Excel chuyên nghiệp lựa chọn lưu dữ liệu của họ vào bảng. Macro này được sử dụng để chuyển đổi bảng bạn đã chọn sang file PDF. Khi bạn chạy marco, chương trình sẽ yêu cầu bạn đặt tên cho bảng muốn lưu.

cach chuyen file excel sang pdf su dung vba 3

Sub PrintTableToPDF()
'SUBROUTINE: PrintTableToPDF
'DEVELOPER: Taimienphi.vn
'DESCRIPTION: Chuyển đổi bảng bạn chọn sang file PDF
Dim strfile As String
Dim myfile As Variant
Dim strTable As String, r As Range
Application.ScreenUpdating = False
'Nhập tên bảng muốn lưu
strTable = InputBox("Tên bảng bạn muốn lưu là gì?", "'Nhập tên bảng") 'Bảng muốn lưu
If Trim(strTable) = "" Then Exit Sub
'Dấu nhắc thư mục lưu
strfile = strTable & "_" _
& Format(Now(), "yyyymmdd_hhmmss") _
& ".pdf"
strfile = ThisWorkbook.Path & "\" & strfile
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Lựa chọn thư mục và tên file lưu thành PDF")
If myfile <> "False" Thì 'lưu thành PDF
Range(strTable).ExportAsFixedFormat Type:=xlTypePDF, Filename:=myfile, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "Không có file được chọn. Không thể lưu file PDF", vbOKOnly, "Không có file được chọn"
End If
Application.DisplayAlerts = False
LetsContinue:
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
Exit Sub
End Sub

Sau khi bạn nhập tên bảng và nhấn OK, hộp thoại sẽ xuất hiện để bạn lựa chọn thư mục muốn lưu file PDF. Chương trình sẽ tự động chọn thời gian và ngày tháng từ đồng hồ hệ thống và chèn vào tên file.

Chuyển tất cả bảng sang file PDF riêng biệt (Print All Tables To Separate PDFs)

Nếu bảng tính bao gồm nhiều bảng trong khi bạn cần lưu từng bảng thành một file PDF riêng, bạn có thể chạy mã VBA này.

Khi bạn chạy marco này, màn hình sẽ xuất hiện hộp thoại yêu cầu bạn lựa chọn thư mục muốn lưu file PDF.

cach chuyen file excel sang pdf su dung vba 4

Sau khi bạn chọn xong thư mục, macro sẽ lưu từng bảng vào một file PDF riêng bằng tên bảng xuất hiện trong tiêu đề file PDF.

Sub PrintAllTablesToPDFs()
'SUBROUTINE: PrintAllTablesToPDFs
'DEVELOPER: Taimienphi.vn
'DESCRIPTION: Chuyển từng bảng trong bảng tính thành một file PDF riêng
Dim strTables() As String
Dim strfile As String
Dim ch As Object, sh As Worksheet
Dim icount As Integer
Dim myfile As Variant
Dim tbl As ListObject
Dim sht As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "Bạn muốn lưu file PDF ở thư mục nào?"
.ButtonName = "Lưu ở đây"
.InitialFileName = ThisWorkbook.Path
If .Show = -1 Then ' if OK is pressed
sfolder = .SelectedItems(1)
Else
End
End If
End With
For Each sht In ThisWorkbook.Worksheets
For Each tbl In sht.ListObjects
myfile = ThisWorkbook.Name & "" & tbl.Name & "" _
& Format(Now(), "yyyymmdd_hhmmss") _
& ".pdf"
myfile = sfolder & "\" & myfile
sht.Range(tbl.Name).ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
myfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Next tbl
Next sht
End Sub
 

Chuyển tất cả bảng tính sang một file PDF (Print All Sheets To One PDF)

Trong nhiều trường hợp, người dùng Excel cần sao chép hầu hết bảng tính vào file PDF. File PDF này được chuyển đổi để lưu trữ trên vi phim microfiche. Nếu bạn cũng rơi vào tình huống tương tự, macro VBA này sẽ giúp bạn tự động chuyển tất cả bảng tính sang một file PDF.

Sub PrintAllSheetsToPDF()
'SUBROUTINE: PrintAllSheetsToPDF
'DEVELOPER: Taimienphi.vn
'DESCRIPTION: Kết hợp tất cả bảng tính vào một file PDF
Dim strSheets() As String
Dim strfile As String
Dim sh As Worksheet
Dim icount As Integer
Dim myfile As Variant
'Save Chart Sheet names to an Array
For Each sh In ActiveWorkbook.Worksheets
If sh.Visible = xlSheetVisible Then
ReDim Preserve strSheets(icount)
strSheets(icount) = sh.Name
icount = icount + 1
End If
Next sh
If icount = 0 Then 'No charts found. Punch error
MsgBox "Không thể tạo file PDF vì không tìm thấy bảng tính.", , "Không tìm thấy bảng tính"
Exit Sub
End If
'Dấu nhắc thư mục lưu
strfile = "Sheets" & "_" _
& Format(Now(), "yyyymmdd_hhmmss") _
& ".pdf"
strfile = ThisWorkbook.Path & "\" & strfile
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Lựa chọn thư mục và tên file lưu thành PDF")
If myfile <> "False" Then 'save as PDF
ThisWorkbook.Sheets(strSheets).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
myfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "Không có file được chọn. Không thể lưu file PDF", vbOKOnly, "Không có file được chọn"
End If
End Sub
 

Chuyển bảng tính biểu đồ sang PDF (Print Chart Sheets To PDF)

Macro này chuyển đổi tất cả bảng tính biểu đồ thành sang file PDF - nhưng không chuyển các đối tượng (object) biểu đồ, có nghĩa là chỉ chuyển đổi biểu đồ có tab riêng trong danh sách tab bảng tính:

cach chuyen file excel sang pdf su dung vba 5

Sub PrintChartSheetsToPDF()
'SUBROUTINE: PrintChartSheetsToPDF
'DEVELOPER: Taimienphi.vn
'DESCRIPTION: Kết hợp tất cả sheet biểu đồ vào một file PDF
Dim strSheets() As String
Dim strfile As String
Dim ch As Object, sh As Worksheet
Dim icount As Integer
Dim myfile As Variant
'Save Chart Sheet names to an Array
For Each ch In ActiveWorkbook.Charts
ReDim Preserve strSheets(icount)
strSheets(icount) = ch.Name
icount = icount + 1
Next ch
If icount = 0 Then 'No charts found. Punch error
MsgBox "Không thể tạo file PDF vì không tìm thấy sheet biểu đồ.", , "Không tìm thấy sheet biểu đồ"
Exit Sub
End If
'Dấu nhắc thư mục lưu
strfile = "Charts" & "_" _
& Format(Now(), "yyyymmdd_hhmmss") _
& ".pdf"
strfile = ThisWorkbook.Path & "\" & strfile
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Lựa chọn thư mục và tên file lưu thành PDF")
If myfile <> "False" Then 'save as PDF
ThisWorkbook.Sheets(strSheets).Select
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
myfile, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=True
Else
MsgBox "Không có file được chọn. Không thể lưu file PDF", vbOKOnly, "Không có file được chọn"
End If
End Sub

Chuyển đối tượng biểu đồ sang PDF (Print Chart Objects To PDF)

Macro này sẽ lưu tất cả biểu đồ thông thường - đối tượng biểu đồ - vào một file PDF riêng. Bất kể biểu đồ nằm ở bảng tính (worksheet) nào đều được lưu vào file PDF. Mỗi biểu đồ sẽ nằm ở một trang riêng trong file PDF .

Sub PrintChartsObjectsToPDF()
'SUBROUTINE: PrintChartsObjectsToPDF
'DEVELOPER: Taimienphi.vn
'DESCRIPTION: Kết hợp tất cả đối tượng biểu đồ vào một file PDF
Dim ws As Worksheet, wsTemp As Worksheet
Dim chrt As ChartObject
Dim tp As Long
Dim strfile As String
Dim myfile As Variant
Application.ScreenUpdating = False
Set wsTemp = Sheets.Add
tp = 10
With wsTemp
For Each ws In ActiveWorkbook.Worksheets
If ws.Name = wsTemp.Name Then 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 Then
ActiveSheet.Rows(Selection.TopLeftCell.Row).PageBreak = xlPageBreakManual
End If
tp = tp + Selection.Height + 50
Next
nextws:
Next ws
End With
'Dấu nhắc thư mục lưu
strfile = "Charts" & "_" _
& Format(Now(), "yyyymmdd\_hhmmss") _
& ".pdf"
strfile = ActiveWorkbook.Path & "\" & strfile
myfile = Application.GetSaveAsFilename _
(InitialFileName:=strfile, _
FileFilter:="PDF Files (*.pdf), *.pdf", _
Title:="Lựa chọn thư mục và tên file lưu thành PDF")
If myfile <> False Then 'save as PDF
wsTemp.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myfile, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
'Else
' MsgBox "Không có file được chọn. Không thể lưu file PDF", vbOKOnly, "Không có file được chọn"
End If
Application.DisplayAlerts = False
wsTemp.Delete
With Application
.ScreenUpdating = True
.DisplayAlerts = True
End With
Exit Sub
End Sub

https://thuthuat.taimienphi.vn/cach-chuyen-file-excel-sang-pdf-sua-dung-vba-44795n.aspx
Ngoài ra, bạn cũng nên tìm hiểu thêm cách lưu vba để sử dụng trong trường hợp cần thiết, xem chi tiết hướng dẫn lưu vba, lưu Macro trong Excel trên Taimienphi.vn.

Tác giả: Ngọc Thảo     (4.0★- 3 đánh giá)  ĐG của bạn?

  

Bài viết liên quan

Cách sửa lỗi "Excel The formula you typed contains an error" khi nhập công thức
Cách đổi inch sang cm trong Excel
Cách chuyển file XLSX sang XLS để mở trên Excel 2003
Cách tạo bảng trong Excel 2010, 2016, 2013, 2019 đơn giản nhất
Cách vẽ đồ thị trong Excel
Từ khoá liên quan:

Cách chuyển file Excel sang PDF sử dụng VBA

, làm thế nào để chuyển file Excel sang PDF, chuyển file Excel sang PDF bằng VBA,

SOFT LIÊN QUAN
  • Excel 2016

    Phần mềm tạo bảng tính, phân tích dữ liệu trên máy tính

    Excel 2016 là một phần trong bộ Microsoft Office 2016 dùng để tạo và chỉnh sửa bảng tính. Excel 2016 với các tính năng phong phú và linh hoạt giúp bạn có thể tạo ra các bảng tính chuyên nghiệp với định dạng, màu sắc và kiểu dáng tùy chỉnh. Bạn cũng có thể tận dụng các công thức và hàm tích hợp sẵn để làm việc với dữ liệu và thực hiện các phép tính phức tạp.

Tin Mới

  • Cách định dạng đường viền cho bảng Excel chi tiết nhất

    Thao tác chèn bảng trên Excel vô cùng quen thuộc với bất kỳ ai khi làm việc với công cụ văn phòng. Chúng ta có thể tùy ý thiết kế giao diện, làm bảng nổi bật hơn trong nội dung bằng cách định dạng đường viền cho bảng Excel. Vậy bạn đã biết cách để định dạng đường viền cho bảng trên ứng dụng Excel chưa.

  • Cách chèn dấu ngoặc trong Excel nhanh nhất

    Nếu bạn đang sử dụng Excel muốn chèn dấu ngoặc để hoàn thiện các biểu thức toán học, đang gặp khó khăn khi không thấy dấu ngoặc. Hãy theo dõi bài viết dưới đây để có thể chèn dấu ngoặc trong Excel nhanh chóng, dễ dàng

  • Cách tạo lịch, Calendar trên Google Sheets nhanh chóng

    Cách tạo lịch trên Google Sheets giúp bạn đọc dễ dàng tạo ra một bảng tính bao gồm các ngày tháng năm để điền các thông tin quan trọng, tạo lời nhắc cho bản thân. Việc tạo lịch trên Google Sheets sẽ hỗ trợ bạn đọc rất nhiều trong công việc giúp bạn sắp xếp công việc, lịch hẹn dễ dàng hơn.

  • Cách sử dụng Sound Booster tăng âm lượng máy tính, laptop

    Phần mềm Sound Booster với giao điện đơn giản giúp người dùng dễ dàng điều chỉnh âm lượng. Hiện tại có hai cách sử dụng Sound Booster để tăng âm lượng máy tính, laptop là dùng phím tắt hoặc chuột để kéo tăng giảm âm lượng.