2016-12-30 25 views
5

Xin lỗi vì bất kỳ lỗi định dạng nào trong bài đăng nhưng đây là lần đầu tiên tôi sử dụng trang web và tôi hoàn toàn không hiểu hướng dẫn định dạng câu hỏi.Excel - Xuất nhiều trang tính sang .pdf qua mã VBA

Tôi đã thấy câu hỏi này trên diễn đàn nhưng nó không hoàn toàn trả lời câu hỏi của tôi, nhưng nó có thể hữu ích cho bất cứ ai tìm cách để giúp đỡ - excel vba not exporting pagesetup to pdf correctly

Tôi gặp chính xác cùng một vấn đề của phạm vi quy định trong từng trang tính không được xuất khi sử dụng mã để tạo đầu ra .pdf. Nội dung được xuất là tất cả mọi thứ trên mỗi trang tính để mỗi trang tính được trải đều trên 2 trang trở lên. Phạm vi in ​​cho mỗi tờ được thiết lập để in khu vực được chỉ định trên 1 trang tính.

Tôi đã cố gắng điều chỉnh mã trong liên kết ở trên nhưng dường như nó không hoạt động với nhiều trang tính.

Mã Tôi đang cố gắng sử dụng ở dạng unadapted của nó là dưới

Sub ClientPDFOutput() 

If Sheets("File Data").Range("FD_FileName") = "" Then 
' MsgBox ("Save the file before exporting to a .pdf fomrat"), vbInformation, "Save File" 

' Exit Sub 
    Else 
End If 

ActiveSheet.Unprotect Password:=strPassword 

Range("UI_Status") = "Creating client PDF output - Please wait" 

SelectSheets 

Application.ScreenUpdating = False 

Sheets(arrSheets).Select 

strFilename = "Test" 

Selection.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=True, _ 
    OpenAfterPublish:=False 

Sheets("User Input").Select 

Range("UI_Status") = "Client .pdf output created and saved" 

ActiveSheet.Protect Password:=strPassword 

Application.ScreenUpdating = True 

MsgBox ("The client output in .pdf format has been created and saved"), vbInformation, ".pdf Created" 

End Sub 

Sub SelectSheets() 

Dim rngSheets As Range 

Set rngSheets = Sheets("File Data").Range("D_OutputSheets") 

If rngSheets.Count = 1 Then 
    arrSheets = rngSheets.Value2 
    Else 
    arrSheets = Application.Transpose(rngSheets.Value2) 
End If 

End Sub 

TIA

Sau hơn một chút thử nghiệm tôi thành lập mà in của tôi dao động trên mỗi của các trang đã được tắt để sửa chữa những.

Tôi cũng đã thêm vào một số mã để chọn phạm vi in ​​của từng trang tính trước khi tất cả được chọn như một phần của mảng trang tính, nhưng phạm vi in ​​trong trang 1 của mảng đang được nhân đôi trên tất cả trang tính ... do đó Nếu phạm vi trong trang tính 1 là phạm vi in ​​B4: P61 và trang tính 2 là B4: M48, trang tính 2 có B4: P61 được chọn khi mảng trang tính được chọn.

Điều này sau đó in ra các phạm vi đã chọn phù hợp cho trang tính 1 nhưng sai cho phần còn lại của trang tính.

Khi tôi thực hiện thủ công bằng cách chọn tất cả các trang tính, Tệp, Xuất, khi đó tất cả các phạm vi in ​​trang sẽ được xuất, vậy tại sao khi được ghi lại và đưa vào một thường trình, nó sẽ bị bỏ qua?

Cảm ơn

Trả lời

0

Vui lòng thử thay đổi thuộc tính IgnorePrintAreas.

Selection.ExportAsFixedFormat _ 
    Type:=xlTypePDF, _ 
    filename:=ActiveWorkbook.Path & "\" & strFilename & ".pdf", _ 
    Quality:=xlQualityStandard, _ 
    IncludeDocProperties:=True, _ 
    IgnorePrintAreas:=False, _ 
    OpenAfterPublish:=False 
0

tôi sẽ tư vấn cho sử dụng sau đây để đảm bảo thiết lập trang của bạn sửa chữa nó vào một trang duy nhất:

With ActiveSheet.PageSetup 
.FitToPagesWide = 1 
.FitToPagesTall = 1 
End With 

Xóa một trong hai dòng đầu tiên hoặc thứ hai trong với tuyên bố cho phù hợp với sở thích của bạn, hoặc giữ cả hai.

Hơn nữa, tôi thấy bạn có selection.ExportAsFixedFormat. Đảm bảo rằng khu vực bạn đã chọn là chính xác hoặc sử dụng các phạm vi cố định. Bạn cũng có thể muốn tự động xác định hàng/cột xa nhất của mình và thêm vào biến số PrintRange. Getting the actual usedrange. Đặt IgnorePrintAreas:=False

Dim PrintRange As Range 

Set PrintRange = Range("A1:XX100") 

PrintRange.ExportAsFixedFormat Type:=xlTypePDF, _ 
           Filename:=Filename, _ 
           Quality:=xlQualityStandard, _ 
           IncludeDocProperties:=True, _ 
           IgnorePrintAreas:=False, _ 
           OpenAfterPublish:=False 
Các vấn đề liên quan