Excel VBA in nhiều trang thành một tệp PDF

Ngay cả khi bạn xuất nhiều trang tính thành một tệp PDF duy nhất, mọi trang tính sẽ bắt đầu trên một trang mới trong tệp PDF đã xuất

Nếu không, trước tiên bạn cần sao chép mọi thứ vào một trang tính và chỉ xuất trang tính tóm tắt đó. Excel không thể xuất 2 trang tính khác nhau trên một trang

Lưu ý rằng việc sao chép mọi thứ vào một trang tính tóm tắt duy nhất chỉ có ý nghĩa nếu độ rộng cột trong các trang tính của bạn giống nhau. Nếu không, bạn sẽ dễ dàng gây rối

Tôi mới tạo mã và macro. Điều tôi đang muốn làm là tạo một mẫu cho phép người quản lý của chúng tôi điền vào một số thông tin trên tab DỮ LIỆU của tôi sẽ đưa vào các tab khác. Sau đó, họ sẽ nhấp vào tên trang tính mà họ muốn lưu dưới dạng pdf bằng cách nhấp vào tên trang tính này trong hộp danh sách. Sau đó, để lưu dưới dạng PDF, tôi đang cố gắng tạo mã để khi nhấp vào nút điều khiển biểu mẫu, mã/macro sẽ chạy và bật lên hộp thoại lưu dưới dạng với PDF đã được chọn làm loại tệp và họ có thể . Sau rất nhiều lần tìm kiếm, tôi đã có thể tạo mã bên dưới. Đối với hầu hết các phần, nó hoạt động, ngoại trừ việc tôi chọn trang tính nào từ hộp danh sách của mình, nó sẽ in tất cả các trang tính trong sổ làm việc. Xin hãy giúp tôi tìm và sửa lỗi của tôi.

>>> sử dụng mã - thẻ <<<

Mã.

Sub Save_Workbook_As_PDF()
Dim i As Long, c As Long
Dim SheetArray() As String

With ActiveSheet.ListBoxSh

For i = 0 To .ListCount - 1
If .Selected(i) Then
ReDim Preserve SheetArray(c)
SheetArray(c) = .List(i)
c = c + 1
End If
Next i

End With

With Application.FileDialog(msoFileDialogSaveAs)

PDFindex = 0
For i = 1 To .Filters.Count
If InStr(VBA.UCase(.Filters(i).Description), "PDF") > 0 Then PDFindex = i
Next

.Title = "Save workbook as PDF"
.InitialFileName = PDFfileName
.FilterIndex = PDFindex

If .Show Then
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=.SelectedItems(1), _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=True
End If

End With

End Sub

 

Đảm bảo rằng bạn chọn các trang tính mà bạn muốn lưu dưới dạng một tệp pdf trước khi chạy macro. Để chọn nhiều trang tính, nhấn và giữ CTRL, sau đó nhấn bằng nút chuột trái bằng chuột trên các tab trang tính nằm ở cuối màn hình Excel của bạn

Điều này xảy ra khi bạn bắt đầu macro

  1. Xác nhận các trang tính đã chọn bằng cách nhấn chuột trái vào "Có"
    Excel VBA in nhiều trang thành một tệp PDF
  2. Hộp thoại hiện ra chọn thư mục lưu. Nhấn chuột trái vào OK
  3. Một hộp thoại mới xuất hiện. Nhập tên tệp
    Excel VBA in nhiều trang thành một tệp PDF
  4. Nhấn chuột trái vào nút OK
  5. Tệp pdf được tạo và mở tự động

2. 2 mã VBA

Sub SaveSelectedSheetsToPDF()
Dim str As String, myfolder As String, myfile As String

str = "Do you want to save these sheets to a single pdf file?" & Chr(10)
For Each sht In ActiveWindow.SelectedSheets
str = str & sht.Name & Chr(10)
Next sht

answer = MsgBox(str, vbYesNo, "Continue with save?")
If answer = vbNo Then Exit Sub

With Application.FileDialog(msoFileDialogFolderPicker)
.Show
myfolder = .SelectedItems(1) & "\"
End With

myfile = InputBox("Enter filename", "Save as..")

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
myfolder & myfile _
, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=True

End Sub

3. Tôi đặt mã ở đâu trong sổ làm việc của mình?

Excel VBA in nhiều trang thành một tệp PDF

  1. Khởi động Trình soạn thảo Visual Basic (Alt+F11)
  2. Nhấn nút chuột trái vào "Chèn" trên menu trên cùng, xem hình trên
  3. Nhấn bằng nút chuột trái trên "Mô-đun"
  4. Dán mã vào cửa sổ
  5. Quay lại Excel

Lưu ý, hãy lưu sổ làm việc của bạn với phần mở rộng tệp *. xlsm (sổ làm việc hỗ trợ macro) để đính kèm mã

Giải thích vĩ mô

Macro bắt đầu bằng Sub và sau đó là tên macro

Sub SaveSelectedSheetsToPDF()

khai báo biến

Các biến str, myfolder và myfile được khai báo kiểu dữ liệu String.
Đọc thêm về Xác định loại dữ liệu.

Dim str As String, myfolder As String, myfile As String

Nối các chuỗi văn bản

Tên trang tính đã chọn được nối với một câu hỏi, Chr(10) là dấu xuống dòng

str = "Do you want to save these sheets to a single pdf file?" & Chr(10)
For Each sht In ActiveWindow.SelectedSheets
str = str & sht.Name & Chr(10)
Next sht

Hộp tin nhắn

Hộp thông báo cho phép bạn xác nhận bạn đã chọn đúng trang tính. Nếu câu trả lời là không thì macro kết thúc

answer = MsgBox(str, vbYesNo, "Continue with save?")
If answer = vbNo Then Exit Sub

Chọn thư mục
Thư mục được lưu trong biến chuỗi myfolder.

With Application.FileDialog(msoFileDialogFolderPicker)
.Show
myfolder = .SelectedItems(1) & "\"
End With

Nhập tên tệp
Tên tệp được lưu trong biến chuỗi myfile.

myfile = InputBox("Enter file name", "Save as..")

Tạo pdf
Các trang tính đã chọn được lưu dưới dạng tệp pdf với tên myfile và đường dẫn myfolder.

________số 8

Kết thúc macro
Macro kết thúc bằng câu lệnh này.

End Sub

Gán macro cho một nút để truy cập nhanh

Excel VBA in nhiều trang thành một tệp PDF

  1. Chuyển đến tab "Nhà phát triển" trên dải băng
  2. Nhấn chuột trái vào nút "Insert"
  3. Nhấn bằng nút chuột trái trên "Nút (Điều khiển biểu mẫu)
  4. Nhấn bằng nút chuột trái và kéo trên trang tính để tạo nút
  5. Chỉ định macro SaveSelectedSheetsToPDF
  6. Nhấn chuột trái vào OK

Lưu macro trong sổ làm việc macro cá nhân của bạn

Nếu bạn lưu macro trong sổ làm việc macro cá nhân, thì bạn có thể truy cập macro đó bất kể bạn đang mở sổ làm việc nào

Đọc này. Sao chép macro của bạn vào Sổ làm việc Macro Cá nhân

Lấy tệp Excel

Excel VBA in nhiều trang thành một tệp PDF

Xuất tất cả các trang tính trong sổ làm việc sang PDF theo chương trình v3. xlsm

danh mục vĩ mô

Excel VBA in nhiều trang thành một tệp PDF

Lưu dữ liệu hóa đơn [VBA]
Bài viết này trình bày một macro sao chép các giá trị giữa các trang tính. Tôi đang sử dụng sổ làm việc mẫu hóa đơn. Macro này sao […]

Excel VBA in nhiều trang thành một tệp PDF

Mở tệp Excel trong một thư mục [VBA]
Hướng dẫn này chỉ cho bạn cách liệt kê các tệp excel trong một thư mục cụ thể và tạo các hộp kiểm liền kề bằng VBA. […]

Excel VBA in nhiều trang thành một tệp PDF

Chia dữ liệu trên nhiều trang tính [VBA]
Trong bài đăng này, tôi sẽ trình bày cách tạo một trang tính mới cho mỗi máy bay bằng vba. […]

Excel VBA in nhiều trang thành một tệp PDF

Làm việc với COMBO BOXES [Điều khiển biểu mẫu]
Bài đăng trên blog này trình bày cách tạo, điền và thay đổi hộp tổ hợp (điều khiển biểu mẫu) theo cách lập trình. Điều khiển biểu mẫu không linh hoạt […]

Excel VBA in nhiều trang thành một tệp PDF

Xác định các số bị thiếu trong một cột
Hình ảnh trên hiển thị một công thức mảng trong ô D6 trích xuất các số bị thiếu trong phạm vi ô B3. B7, phía dưới […]

Excel VBA in nhiều trang thành một tệp PDF

Chạy Macro từ danh sách thả xuống [VBA]
Bài viết này trình bày cách chạy macro VBA bằng danh sách thả xuống. Danh sách thả xuống chứa hai […]

Excel VBA in nhiều trang thành một tệp PDF

Lịch Excel [VBA]
Sổ làm việc này chứa hai trang tính, một trang tính hiển thị lịch và trang tính còn lại được dùng để lưu trữ các sự kiện. […]

Excel VBA in nhiều trang thành một tệp PDF

Thay đổi phạm vi dữ liệu biểu đồ bằng cách sử dụng Danh sách thả xuống [VBA]
Trong bài viết này, tôi sẽ trình bày cách nhanh chóng thay đổi phạm vi dữ liệu biểu đồ bằng cách sử dụng hộp tổ hợp (danh sách thả xuống). Trên […]

Excel VBA in nhiều trang thành một tệp PDF

Làm việc với TỆP
Có gì trên trang này Sao chép tệp Sao chép và đổi tên tệp Đổi tên tệp Liệt kê tệp trong thư mục […]

Excel VBA in nhiều trang thành một tệp PDF

Tự động thay đổi kích thước cột khi bạn nhập
Excel không thay đổi kích thước cột khi bạn nhập theo mặc định như hình ảnh minh họa ở trên. Bạn có thể dễ dàng thay đổi kích thước tất cả […]

Excel VBA in nhiều trang thành một tệp PDF

Cách tạo biểu đồ Excel tương tác [VBA]
Bài viết này mô tả cách tạo biểu đồ tương tác, người dùng có thể nhấn bằng nút chuột trái trên một nút […]

Excel VBA in nhiều trang thành một tệp PDF

Cách thay đổi động ảnh trong trang tính [VBA]
Rahul hỏi. Tôi muốn biết cách tạo trang tính vlookup và khi chúng tôi nhập tên vào […]

Excel VBA in nhiều trang thành một tệp PDF

Tạo nút In [VBA]
Bài viết này mô tả cách tạo và đặt một nút trên trang tính Excel, sau đó gán macro cho […]

Excel VBA in nhiều trang thành một tệp PDF

Tạo danh sách riêng biệt duy nhất bằng cách sử dụng Bộ lọc nâng cao trong macro [VBA]
Câu hỏi. chào tất cả, cảm ơn vì công thức/công thức mảng tuyệt vời. nó hoạt động rất tốt. gần đây, tôi nhận thấy rằng công thức mảng sẽ […]

Excel VBA in nhiều trang thành một tệp PDF

Tạo trang tính mới theo chương trình dựa trên các giá trị trong phạm vi ô [VBA]
Bài viết này trình bày macro chèn trang tính mới dựa trên tên trong phạm vi ô. Phạm vi ô có thể […]

Excel VBA in nhiều trang thành một tệp PDF

Mẫu Excel. Hoàn thành công việc [VBA]
Trong bài viết này, tôi sẽ trình bày một sổ làm việc đơn giản nơi bạn có thể tạo hoặc xóa dự án và thêm […]

Excel VBA in nhiều trang thành một tệp PDF

Cách đánh dấu hàng của ô đã chọn theo chương trình
Hôm nay, tôi muốn chia sẻ với bạn các quy trình xử lý sự kiện nhỏ giúp bạn dễ dàng […]

Excel VBA in nhiều trang thành một tệp PDF

Hiển thị/ẩn ảnh bằng nút
Bài viết này giải thích cách ẩn một hình ảnh cụ thể trong Excel bằng cách sử dụng hình dạng làm nút. Nếu người dùng […]

Excel VBA in nhiều trang thành một tệp PDF

Tìm các ô chứa công thức có giá trị bằng chữ (mã hóa cứng)
Bài viết này mô tả các cách khác nhau để xác định giá trị bằng chữ hoặc giá trị được mã hóa cứng trong công thức. Hình ảnh trên cho thấy kết quả từ […]

Hơn 1300 công thức Excel

danh mục excel


trang chủ

Bài viết cập nhật mới nhất

Hàm Excel

Hơn 300 hàm Excel với thông tin chi tiết bao gồm cú pháp, đối số, giá trị trả về và ví dụ cho hầu hết các hàm được sử dụng trong công thức Excel

Công thức Excel

Hơn 1300 công thức được sắp xếp trong các danh mục con

Bảng Excel

Bảng Excel đơn giản hóa công việc của bạn với dữ liệu, thêm hoặc xóa dữ liệu, lọc, tính tổng, sắp xếp, nâng cao khả năng đọc bằng cách sử dụng định dạng ô, tham chiếu ô, công thức, v.v.

Bộ lọc nâng cao

Cho phép bạn lọc dữ liệu dựa trên giá trị đã chọn , văn bản nhất định hoặc tiêu chí khác. Nó cũng cho phép bạn lọc dữ liệu hiện có hoặc di chuyển các giá trị đã lọc sang vị trí mới

Xác nhận dữ liệu

Cho phép bạn kiểm soát những gì người dùng có thể nhập vào một ô. Nó cho phép bạn chỉ định các điều kiện và hiển thị thông báo tùy chỉnh nếu dữ liệu đã nhập không hợp lệ

Danh sách thả xuống

Cho phép người dùng làm việc hiệu quả hơn bằng cách hiển thị danh sách mà người dùng có thể chọn một giá trị từ đó. Điều này cho phép bạn kiểm soát những gì được hiển thị trong danh sách và nhanh hơn so với nhập vào một ô

Phạm vi được đặt tên

Cho phép bạn đặt tên cho một hoặc nhiều ô, điều này giúp bạn dễ dàng tìm ô bằng cách sử dụng hộp Tên, đọc và hiểu các công thức chứa tên thay vì tham chiếu ô

Trình giải Excel

Bộ giải Excel là một phần bổ trợ miễn phí sử dụng các ô mục tiêu, các ràng buộc dựa trên các công thức trên trang tính để thực hiện phân tích giả định và các vấn đề quyết định khác như hoán vị và kết hợp

biểu đồ

Một tính năng của Excel cho phép bạn trực quan hóa dữ liệu trong biểu đồ

Định dạng có điều kiện

Định dạng ô hoặc giá trị ô dựa trên điều kiện hoặc tiêu chí, có nhiều công cụ Định dạng có điều kiện tích hợp sẵn mà bạn có thể sử dụng hoặc sử dụng công thức định dạng có điều kiện tùy chỉnh

Bảng tổng hợp

Cho phép bạn nhanh chóng tóm tắt lượng dữ liệu khổng lồ theo cách rất thân thiện với người dùng. Tính năng Excel mạnh mẽ này cho phép bạn phân tích, sắp xếp và phân loại dữ liệu quan trọng một cách hiệu quả

VBA

VBA là viết tắt của Visual Basic for Applications và là ngôn ngữ lập trình máy tính do Microsoft phát triển, nó cho phép bạn tự động hóa các tác vụ tốn thời gian và tạo các chức năng tùy chỉnh

macro

Một chương trình hoặc chương trình con được xây dựng trong VBA mà bất kỳ ai cũng có thể tạo. Sử dụng trình ghi macro để nhanh chóng tạo macro VBA của riêng bạn

UDF

UDF là viết tắt của Hàm do người dùng xác định và là các hàm được tạo tùy chỉnh mà bất kỳ ai cũng có thể tạo

Lưu trữ

Danh sách tất cả các bài báo đã xuất bản

12 phản hồi cho “Cách lưu nhiều trang tính cụ thể vào tệp pdf theo chương trình”

  1. Bert van Zandbergen nói.

    Xin chào Oscar
    Trước hết, xin cảm ơn macro tuyệt đẹp của bạn để sao chép tệp Excel sang PDF. Nếu bạn muốn sao chép một trường ngang rộng sang PDF, nó có thể gây ra sự phân tách trong PDF. bạn được chia văn bản, đồ họa và/hoặc đối tượng trên hai trang). Đó không phải là điều bạn muốn.

    Để tạo bố cục ngang hoàn hảo, tôi khuyên bạn nên xác định trước trong trang tính. Phạm vi In, Bố cục Trang (trên ribbon). Tạo với File/Print Options các hướng dẫn cần thiết khác, ví dụ: chọn các cài đặt như "in cho vừa", đường viền, v.v. vân vân. Bố cục in thực tế được hiển thị ở phía bên phải

    Thay vì in bình thường, giờ đây bạn có thể kích hoạt Macro. Những điều chỉnh đơn giản này không phân phối trên hai trang mà là định dạng PDF ngang phù hợp. Vì vậy, đó là một đóng góp cho độc giả của bạn

    Trân trọng,
    Bert van Zandbergen

    • Oscar nói.

      Bert van Zandbergen,

      cảm ơn bạn đã bình luận

  2. testrad nói.

    Xin chào, Oscar
    mã của bạn hoạt động tốt nhưng nó chỉ in các trang tính excel đã được chọn riêng lẻ trước khi chạy macro. có cách nào để lấy mã tự động chọn tất cả các sheet bỏ ẩn trong excel rồi in ra pdf không.

    Lý do tại sao tôi nói các trang tính không bị ẩn là vì tôi có một biểu mẫu người dùng lớn dựa trên các lựa chọn của người dùng sẽ ẩn các trang excel không cần thiết. vì vậy tôi chỉ cần in các trang tính có liên quan, đó sẽ là các trang tính không bị ẩn

    cảm ơn vì đã dành thời gian cho tôi,

    Tyler Estrada

  3. Mohamed nói.

    Xin chào Oscar
    cảm ơn vì nỗ lực tuyệt vời

    một câu hỏi
    nếu tôi muốn xuất từng trang tính thành một tệp pdf riêng biệt, thì tôi nên thay đổi điều gì trong mã?

    Cảm ơn
    Mohamed

  4. Luc nói.

    Xin chào,

    Tôi vừa tìm thấy lỗi. Tôi cũng đã mở tệp xlsm, xem mã ở đó và thấy rằng nó khác với mã ở đầu bài viết này (tôi đã sao chép mã từ đó trước).
    Sự khác biệt nằm ở phần "amp;amp;amp;amp".
    Sau khi loại bỏ những thứ này, macro hiện đang chạy trơn tru.

    Chúc mừng
    Lục

  5. Joe nói.

    Oscar - Rất, rất cảm ơn vì điều này, đây là một bài đăng xuất sắc và là một giải pháp tuyệt vời cho những gì tôi đang tìm kiếm. Một câu hỏi, tôi đã tự hỏi làm thế nào để làm điều này dựa trên danh sách xác thực. Ví dụ: giả sử tôi có 10 tờ. Tôi có một danh sách thả xuống nói trong A1 của Sheet1, mà menu sổ làm việc. Danh sách thả xuống chứa - giả sử hai báo cáo - Báo cáo ngắn và Báo cáo dài.
    Nếu tôi nhấn chuột trái vào Báo cáo ngắn, nó sẽ in các trang - 2, 3 và 5. Nếu tôi chọn Long Report, nó sẽ in các trang 2, 6,7,8,9 và 10.

    Tôi muốn có tùy chọn tương tự cho một tệp PDF. Như vậy, nếu tôi chọn Báo cáo ngắn, các trang 2, 3 và 5 sẽ được lưu trong một tệp PDF duy nhất. Bất kỳ trợ giúp về điều này sẽ được đánh giá rất cao. hoan hô

    Joe

  6. MANOJ nói.

    Xin chào ngài,

    Khi tôi chạy macro, nó hiển thị "lỗi thời gian chạy 5". thủ tục không hợp lệ hoặc đối số cuộc gọi

    hãy giúp chúng tôi giải quyết các vấn đề

    Cảm ơn
    Manoj

    • Oscar nói.

      MANOJ,

      WordPress đã thêm các ký tự không nên có trong mã, tôi đã cố xóa chúng. Tôi khuyên bạn nên thử tệp đính kèm

    • MANOJ nói.

      Xin chào ngài,

      Bạn đã đề xuất lấy tệp đính kèm nhưng điều đó không phản ánh, có thể gửi cho tôi qua thư không ([email được bảo vệ])

      Trân trọng
      Manoj

  7. MANOJ nói.

    Xin chào ngài,

    Vui lòng xem qua đoạn mã dưới đây và giúp tôi giải quyết các vấn đề mà khi tôi chạy macro, nó hiển thị lỗi thời gian chạy 5". thủ tục không hợp lệ hoặc đối số cuộc gọi

    Tôi có thể sử dụng Excel để in nhiều tờ trong một tệp PDF không?

    Nhấp vào tùy chọn Chọn tất cả các Trang tính. Trong Microsoft Excel, đi tới Bố cục trang và nhấp vào nút mở rộng cho hộp thoại Thiết lập trang. Đặt Chất lượng in thành giá trị DPI bạn muốn và nhấn OK để Excel sẽ ghi lại thực tế là tất cả các trang đều có cùng cài đặt in

    Làm cách nào để chuyển đổi trang tính Excel sang PDF bằng VBA?

    Cách lưu tệp Excel dưới dạng PDF bằng VBA. Phương thức ExportAsFixedFormat .
    sổ làm việc. Phương thức ExportAsFixedFormat, khi lưu sổ làm việc Excel dưới dạng PDF
    bảng tính. Phương thức ExportAsFixedFormat, nếu bạn đang lưu trang tính dưới dạng PDF
    Phạm vi. Phương thức ExportAsFixedFormat, khi làm việc với đối tượng Range
    biểu đồ