Xuất PDF một vùng trên Sheet vào trang mới cuối cùng với file pdf chỉ định

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
671
Được thích
545
Điểm
860
Xin chào GPE,
Xim cho hỏi có cách nào (VBA) mà mình có thể in (xuât) một vùng-range thành pdf, và đạt nó vào trang cuối cùng (tạo trang mới) cho file pdf chỉ định không ạ?
Xin cám ơn.
 

giaiphap

==(^o^)==
Tham gia ngày
12 Tháng ba 2007
Bài viết
5,238
Được thích
4,875
Điểm
860
Xin chào GPE,
Xim cho hỏi có cách nào (VBA) mà mình có thể in (xuât) một vùng-range thành pdf, và đạt nó vào trang cuối cùng (tạo trang mới) cho file pdf chỉ định không ạ?
Xin cám ơn.
Trước hết vào trang dưới đâytải về và cài đặt PDFtk Free vào máy tính.
Sau đó tải file này về tham khảo code trong file.
 

File đính kèm

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
671
Được thích
545
Điểm
860
Trước hết vào trang dưới đâytải về và cài đặt PDFtk Free vào máy tính.
Sau đó tải file này về tham khảo code trong file.
Xin cám ơn anh nhiều, để em nghiên cứu...

------------------------------------

Dạ, em đã là được rồi ạ. Tuyệt vời ông mặt trời luôn! Cám ơn anh nhiều.
Cái này có cái bất tiện là phải dùng cái tool "pdftk" ah, mà cái này là không phổ biến cho lắm, hầu như không ai sử dụng.
Vậy mình có thể làm bằng VBA thuần túy hay có thể Acrobat không vậy anh?
 
Lần chỉnh sửa cuối:

giaiphap

==(^o^)==
Tham gia ngày
12 Tháng ba 2007
Bài viết
5,238
Được thích
4,875
Điểm
860
Cái này có cái bất tiện là phải dùng cái tool "pdftk" ah, mà cái này là không phổ biến cho lắm, hầu như không ai sử dụng.
Vậy mình có thể làm bằng VBA thuần túy hay có thể Acrobat không vậy anh?
Đây là quan điểm thôi bạn, chứ tôi thì không bao giờ dùng tới Acrobat (Bản thân không có nhu cầu dùng nhiều vào Acrobat, mục đích chủ yếu của tôi là dùng phần mềm xem file PDF mà nếu sử dụng Acrobat thì nặng quá, dùng phần mềm khác để xem sẽ nhẹ hợn).
Bạn có thể nghiên cứu chỏ này.
 

thnghiachau

Thành viên tiêu biểu
Tham gia ngày
14 Tháng chín 2009
Bài viết
671
Được thích
545
Điểm
860
Đây là quan điểm thôi bạn, chứ tôi thì không bao giờ dùng tới Acrobat (Bản thân không có nhu cầu dùng nhiều vào Acrobat, mục đích chủ yếu của tôi là dùng phần mềm xem file PDF mà nếu sử dụng Acrobat thì nặng quá, dùng phần mềm khác để xem sẽ nhẹ hợn).
Bạn có thể nghiên cứu chỏ này.
Dạ, cám ơn anh, e cũng đang tìm hiểu ạ.

--------------------------------

Em dựa vào mấy cái link anh @giaiphap gởi và đã làm được rồi anh ơi... Cám ơn anh @giaiphap rất nhiều.

Em xin đưa lên đây để cho bạn nào cần có thể tham khảo ạ.
Nếu có sai sót mong mọi người giúp đỡ.

Mã:
Sub JointMultiFilePDF_ByAcrobat(ByVal sTargetPDF As String, ByVal arrFilePDF)
Dim oAcroApp As Object, oTargetDoc As Object, oSourceDoc As Object, oFSO As Object
Dim i As Integer, iTotalNumberOfPages_SourceToInsert As Long, iLastNumPages_Target As Long
Dim blIsOK As Boolean
Dim PDSaveFull
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    If Not oFSO.FileExists(sTargetPDF) Then
        MsgBox "File target: """ & sTargetPDF & """ is NOT available !!!", vbExclamation, "---:: NOTICE ::---"
        GoTo ErrorHandle
    End If
    Set oAcroApp = CreateObject("Acroexch.app")
    Set oTargetDoc = CreateObject("AcroExch.PDDoc")
    blIsOK = oTargetDoc.Open(sTargetPDF)
    If Not blIsOK Then
        MsgBox "Can NOT open File target: """ & sTargetPDF & """ !!!", vbExclamation, "---:: NOTICE ::---"
        GoTo ErrorHandle
    End If
    If IsArray(arrFilePDF) Then
        For i = LBound(arrFilePDF) To UBound(arrFilePDF)
            If oFSO.FileExists(arrFilePDF(i)) Then
                Set oSourceDoc = CreateObject("AcroExch.PDDoc")
                blIsOK = oSourceDoc.Open(arrFilePDF(i))
                If blIsOK Then
                    iLastNumPages_Target = oTargetDoc.GetNumPages() - 1
                    iTotalNumberOfPages_SourceToInsert = oSourceDoc.GetNumPages
                    blIsOK = oTargetDoc.InsertPages(iLastNumPages_Target, oSourceDoc, 0, iTotalNumberOfPages_SourceToInsert, False)
                    If blIsOK Then
                        blIsOK = oTargetDoc.Save(PDSaveFull, sTargetPDF)
                    Else
                        MsgBox "Can NOT joint File: """ & arrFilePDF(i) & """", vbExclamation, "---:: NOTICE ::---"
                    End If
                Else
                    GoTo NextFilePDF
                End If
                Set oSourceDoc = Nothing
            End If
NextFilePDF:
        Next i
    End If
    
ErrorHandle:
    Set oFSO = Nothing
    Set oTargetDoc = Nothing
    Set oSourceDoc = Nothing
    oAcroApp.Exit
    Set oAcroApp = Nothing
    
    MsgBox "DONE", vbInformation, "---:: NOTICE ::---"
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Top Bottom