2016-12-30 9 views
5

के माध्यम से .pdf पर एकाधिक चादरें निर्यात करना पोस्ट में किसी भी स्वरूपण त्रुटियों के लिए क्षमा करें लेकिन यह पहली बार है जब मैंने साइट का उपयोग किया है और मुझे फ़ेक्स्टियन फ़ॉर्मेटिंग निर्देशों को समझ में नहीं आता है।एक्सेल - वीबीए कोड

मैं बोर्ड पर इस सवाल को देखा है, लेकिन यह काफी मेरे सवाल का जवाब नहीं है, लेकिन यह मदद करने के लिए देख किसी के लिए उपयोगी हो सकता है - excel vba not exporting pagesetup to pdf correctly

मैं बिल्कुल प्रत्येक में निर्दिष्ट श्रेणियों की एक ही समस्या हो रहा है .pdf आउटपुट बनाने के लिए कोड का उपयोग करते समय चादर निर्यात नहीं किया जा रहा है। निर्यात किया जाता है जो प्रत्येक शीट पर होता है, इसलिए प्रत्येक वर्कशीट 2 या अधिक पृष्ठों में फैली हुई है। प्रत्येक शीट के लिए प्रिंट श्रेणी निर्दिष्ट क्षेत्र को 1 शीट पर मुद्रित करने के लिए सेट की जाती है।

मैंने उपरोक्त लिंक में कोड को अनुकूलित करने का प्रयास किया है लेकिन यह एकाधिक चादरों के साथ काम नहीं कर रहा है।

कोड मैं अपने unadapted रूप में उपयोग करने का प्रयास कर रहा हूँ नीचे

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

थोड़ा अधिक प्रयोग मैं स्थापना की है कि मेरी प्रिंट प्रत्येक पर पर्वतमाला के बाद पृष्ठों को बंद कर दिया गया था इसलिए इन्हें ठीक किया गया।

मैंने शीट सरणी के हिस्से के रूप में चुने जाने से पहले प्रत्येक शीट की प्रिंट रेंज का चयन करने के लिए कुछ कोड में भी जोड़ा, लेकिन सरणी की पहली शीट में प्रिंट रेंज को सभी चादरों में डुप्लिकेट किया जा रहा है ... इसलिए यदि शीट 1 में सीमा बी 4 है: पी 61 और शीट 2 प्रिंट रेंज बी 4: एम 48 है, शीट 2 में बी 4 है: पी 61 चयनित है जब चादरों की सरणी का चयन किया जाता है।

यह तब चयनित श्रेणियों को प्रिंट करता है जो शीट 1 के लिए सही है लेकिन बाकी चादरों के लिए गलत है।

जब मैं इसे सभी चादरें, फ़ाइल, निर्यात का चयन करके मैन्युअल रूप से करता हूं तो सभी चादरें प्रिंट श्रेणियां निर्यात की जाती हैं, इसलिए जब इसे रिकॉर्ड किया जाता है और नियमित रूप से रखा जाता है तो इसे अनदेखा किया जा रहा है?

धन्यवाद

उत्तर

0

IgnorePrintAreas संपत्ति को बदलने के लिए प्रयास करें।

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

मैं निम्नलिखित का उपयोग कर अपने पृष्ठ सेटअप एक ही पृष्ठ के लिए यह ठीक करता है सुनिश्चित करने के लिए सलाह देंगे:

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

हटाएँ बयान के साथ में या तो पहली या दूसरी पंक्ति अपनी प्राथमिकताओं के अनुरूप, या रखने के दोनों।

आगे मैं देखता हूं कि आपके पास selection.ExportAsFixedFormat है। सुनिश्चित करें कि आपका चयनित क्षेत्र सही है या निश्चित सीमाओं का उपयोग करें। आप अपनी सबसे पुरानी पंक्ति/कॉलम गतिशील रूप से निर्धारित करना भी चाहते हैं और इसे PrintRange परिवर्तनीय में जोड़ सकते हैं। Getting the actual usedrange। सेट 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