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 thêm xóa hàng và cột trong Excel
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
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 2019

    Phần mềm tạo bảng tính Excel 2019 cho máy tính

    Hãy tải Excel 2019 ngay hôm nay. Với phiên bản này, Excel mang đến nhiều tính năng nâng cao, giúp bạn quản lý và phân tích dữ liệu một cách chuyên nghiệp hơn bao giờ hết.

Tin Mới

  • Các phím tắt trong Excel 2007, 2013, 2016, 2010, 2003, 2019, 2021

    Trong quá trình làm việc với Excel, việc sử dụng phím tắt không chỉ giúp tiết kiệm thời gian mà còn nâng cao hiệu suất làm việc. Tận dụng phím tắt trong Excel cơ bản và nâng cao giúp bạn thực hiện các thao tác nhanh chóng, hiệu quả hơn, từ việc sao chép dữ liệu đến định dạng ô, bảng

  • Cách đánh số trang trong Excel mọi phiên bản

    Đánh số trang trong Excel là tính năng được ít người biết đến, hầu hết chúng ta chỉ sử dụng nhiều trên Word. Tuy nhiên Excel đôi lúc cũng rất cần và để có thể đánh số trang trong Excel cũng rất dễ dàng, bạn cũng có thể

  • Cách xuống dòng trong Excel, Google Spreadsheets dễ dàng

    Khi làm việc với các bảng tính, đôi khi bạn cần nhập nhiều thông tin trong một ô. Việc xuống dòng trong Excel hoặc Google Spreadsheets trên điện thoại dễ dàng giúp bạn phân chia nội dung một cách hợp lý, làm cho bảng

  • Lời bài hát Hành Khúc Thanh Niên Tình Nguyện

    Với lời bài hát Hành Khúc Thanh Niên Tình Nguyện ý nghĩa, truyền được cảm hứng cho thế hệ trẻ nên cứ vào ngày 26/3 lại được cất lên. Các bạn có thể xem lời bài hát này để có thể hát theo, giúp chương trình diễn ra tốt đẹp, hào hùng hơn.