प्रिंट मार्जिन

Excel में दस्तावेज़ प्रिंट करते समय, मार्जिन सेटिंग्स दिखावट और पढ़ने में आसानी को महत्वपूर्ण रूप से प्रभावित करती हैं। जबकि आप उन्हें मैन्युअल रूप से सेट कर सकते हैं, VBA का उपयोग करने से आप कई शीट या वर्कबुक को कुशलतापूर्वक प्रोसेस कर सकते हैं जब आप एक समान मार्जिन लागू करना चाहते हैं। यह लेख विस्तार से बताता है कि PageSetup ऑब्जेक्ट का उपयोग करके प्रिंट मार्जिन कैसे सेट करें।

प्रिंट मार्जिन सेटिंग्स की आवश्यकता कब होती है

VBA प्रिंट मार्जिन सेटिंग्स विशेष रूप से निम्नलिखित स्थितियों में उपयोगी हैं:

  • कंपनी टेम्पलेट्स का मानकीकरण: जब आप पूरी कंपनी में उपयोग की जाने वाली रिपोर्ट और फॉर्म के मार्जिन को एकीकृत करना चाहते हैं
  • कई शीट के लिए बल्क सेटिंग्स: जब आप वर्कबुक में सभी शीट पर समान मार्जिन लागू करना चाहते हैं
  • प्रिंट प्रीव्यू के बाद फाइन-ट्यूनिंग: जब प्रोग्रामेटिक रूप से मार्जिन को गतिशील रूप से समायोजित करते हैं
  • रूटीन कार्यों का स्वचालन: जब दैनिक या साप्ताहिक प्रिंटिंग कार्यों को स्वचालित करते हैं

मैन्युअल रूप से मार्जिन सेट करते समय, आप “पेज लेआउट” टैब से “मार्जिन” का चयन करते हैं, लेकिन जब आपके पास कई शीट हों तो यह बहुत समय लेने वाला होता है। VBA के साथ, आप कोड की कुछ पंक्तियों के साथ बल्क सेटिंग्स कर सकते हैं।

PageSetup ऑब्जेक्ट की मूल बातें

Excel VBA में प्रिंट सेटिंग्स कॉन्फ़िगर करने के लिए, PageSetup ऑब्जेक्ट का उपयोग करें। इस ऑब्जेक्ट को Worksheet ऑब्जेक्ट की प्रॉपर्टी के रूप में एक्सेस किया जा सकता है।

'___बेसिक एक्सेस मेथड
Worksheets("Sheet1").PageSetup

मार्जिन से संबंधित प्रॉपर्टीज

PageSetup ऑब्जेक्ट में मार्जिन सेटिंग्स से संबंधित निम्नलिखित प्रॉपर्टीज हैं:

प्रॉपर्टीविवरण
LeftMarginबायां मार्जिन
RightMarginदायां मार्जिन
TopMarginऊपरी मार्जिन
BottomMarginनिचला मार्जिन
HeaderMarginहेडर मार्जिन (ऊपरी किनारे से)
FooterMarginफुटर मार्जिन (निचले किनारे से)
मुख्य बिंदु

सभी मार्जिन प्रॉपर्टीज पॉइंट्स में निर्दिष्ट की जाती हैं। यदि आप सेंटीमीटर या इंच में निर्दिष्ट करना चाहते हैं, तो कन्वर्जन फंक्शन का उपयोग करें।

यूनिट कन्वर्जन मेथड्स

VBA में, मार्जिन वैल्यू पॉइंट्स में निर्दिष्ट की जानी चाहिए। सेंटीमीटर या इंच में निर्दिष्ट करने के लिए, निम्नलिखित कन्वर्जन फंक्शन का उपयोग करें:

'___इंच को पॉइंट्स में कन्वर्ट करें
Application.InchesToPoints(1)  '___1 इंच = 72 पॉइंट्स

'___सेंटीमीटर को पॉइंट्स में कन्वर्ट करें
Application.CentimetersToPoints(1)  '___1 सेंटीमीटर ≈ 28.35 पॉइंट्स

बेसिक मार्जिन सेटिंग कोड उदाहरण

सिंगल शीट के लिए मार्जिन सेट करना

यहां सबसे बुनियादी उपयोग का एक उदाहरण है—एक विशिष्ट शीट के लिए मार्जिन सेट करना।

Sub SetMarginsSingleSheet()
    With Worksheets("Sheet1").PageSetup
        '___बाएं और दाएं मार्जिन को 1 सेंटीमीटर पर सेट करें
        .LeftMargin = Application.CentimetersToPoints(1)
        .RightMargin = Application.CentimetersToPoints(1)

        '___ऊपरी और निचले मार्जिन को 2 सेंटीमीटर पर सेट करें
        .TopMargin = Application.CentimetersToPoints(2)
        .BottomMargin = Application.CentimetersToPoints(2)

        '___हेडर और फुटर मार्जिन को 0.5 सेंटीमीटर पर सेट करें
        .HeaderMargin = Application.CentimetersToPoints(0.5)
        .FooterMargin = Application.CentimetersToPoints(0.5)
    End With
End Sub

इंच में सेटिंग

इंच में मार्जिन सेट करते समय, InchesToPoints फंक्शन का उपयोग करें।

Sub SetMarginsInInches()
    With ActiveSheet.PageSetup
        '___बाएं और दाएं मार्जिन को 0.5 इंच पर सेट करें
        .LeftMargin = Application.InchesToPoints(0.5)
        .RightMargin = Application.InchesToPoints(0.5)

        '___ऊपरी और निचले मार्जिन को 0.75 इंच पर सेट करें
        .TopMargin = Application.InchesToPoints(0.75)
        .BottomMargin = Application.InchesToPoints(0.75)
    End With
End Sub

सीधे पॉइंट्स में निर्दिष्ट करना

आप सीधे पॉइंट्स में भी निर्दिष्ट कर सकते हैं। 1 इंच = 72 पॉइंट्स के रूप में गणना करें।

Sub SetMarginsInPoints()
    With ActiveSheet.PageSetup
        '___36 पॉइंट्स (0.5 इंच) पर सेट करें
        .LeftMargin = 36
        .RightMargin = 36
        .TopMargin = 36
        .BottomMargin = 36
    End With
End Sub

कई शीट के लिए बल्क सेटिंग्स

वर्कबुक में सभी शीट पर लागू करना

यहां एक वर्कबुक में सभी वर्कशीट पर समान मार्जिन सेटिंग्स लागू करने का एक उदाहरण है।

Sub SetMarginsAllSheets()
    Dim ws As Worksheet

    For Each ws In ThisWorkbook.Worksheets
        With ws.PageSetup
            .LeftMargin = Application.CentimetersToPoints(1.5)
            .RightMargin = Application.CentimetersToPoints(1.5)
            .TopMargin = Application.CentimetersToPoints(2)
            .BottomMargin = Application.CentimetersToPoints(2)
            .HeaderMargin = Application.CentimetersToPoints(1)
            .FooterMargin = Application.CentimetersToPoints(1)
        End With
    Next ws

    MsgBox "सभी शीट के लिए मार्जिन सेट कर दिए गए हैं।", vbInformation
End Sub

केवल चयनित शीट पर लागू करना

जब केवल उपयोगकर्ता द्वारा चयनित शीट पर मार्जिन सेटिंग्स लागू करते हैं।

Sub SetMarginsSelectedSheets()
    Dim ws As Object

    For Each ws In ActiveWindow.SelectedSheets
        With ws.PageSetup
            .LeftMargin = Application.CentimetersToPoints(1)
            .RightMargin = Application.CentimetersToPoints(1)
            .TopMargin = Application.CentimetersToPoints(1.5)
            .BottomMargin = Application.CentimetersToPoints(1.5)
        End With
    Next ws

    MsgBox "चयनित शीट के लिए मार्जिन सेट कर दिए गए हैं।", vbInformation
End Sub
नोट

PageSetup ऑब्जेक्ट तक पहुंचना एक अपेक्षाकृत धीमी प्रक्रिया है। कई शीट पर सेटिंग्स लागू करते समय, आप स्क्रीन अपडेट बंद करने के लिए Application.ScreenUpdating = False सेट करके प्रोसेसिंग गति में सुधार कर सकते हैं।

प्रोसेसिंग गति का अनुकूलन

चूंकि PageSetup ऑब्जेक्ट तक पहुंचने में समय लगता है, कई शीट प्रोसेस करते समय निम्नानुसार अनुकूलित करें।

Sub SetMarginsOptimized()
    Dim ws As Worksheet
    Dim leftMargin As Double
    Dim rightMargin As Double
    Dim topMargin As Double
    Dim bottomMargin As Double

    '___मार्जिन वैल्यू पहले से गणना करें
    leftMargin = Application.CentimetersToPoints(1)
    rightMargin = Application.CentimetersToPoints(1)
    topMargin = Application.CentimetersToPoints(2)
    bottomMargin = Application.CentimetersToPoints(2)

    '___स्क्रीन अपडेट और ऑटो-गणना अस्थायी रूप से रोकें
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual

    On Error GoTo ErrorHandler

    For Each ws In ThisWorkbook.Worksheets
        With ws.PageSetup
            .LeftMargin = leftMargin
            .RightMargin = rightMargin
            .TopMargin = topMargin
            .BottomMargin = bottomMargin
        End With
    Next ws

Cleanup:
    '___सेटिंग्स पुनर्स्थापित करें
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Exit Sub

ErrorHandler:
    MsgBox "एक त्रुटि हुई: " & Err.Description, vbCritical
    Resume Cleanup
End Sub

व्यावहारिक उपयोग के मामले

उपयोग का मामला 1: प्रिंट टेम्पलेट्स की ऑटो-सेटिंग

नई शीट बनाते समय स्वचालित रूप से प्रिंट सेटिंग्स लागू करने का एक उदाहरण।

Sub CreatePrintReadySheet()
    Dim newSheet As Worksheet

    '___एक नई शीट जोड़ें
    Set newSheet = ThisWorkbook.Worksheets.Add

    With newSheet
        '___शीट का नाम सेट करें
        .Name = "रिपोर्ट_" & Format(Date, "yyyymmdd")

        '___प्रिंट सेटिंग्स
        With .PageSetup
            '___मार्जिन सेटिंग्स
            .LeftMargin = Application.CentimetersToPoints(2)
            .RightMargin = Application.CentimetersToPoints(2)
            .TopMargin = Application.CentimetersToPoints(2.5)
            .BottomMargin = Application.CentimetersToPoints(2.5)
            .HeaderMargin = Application.CentimetersToPoints(1)
            .FooterMargin = Application.CentimetersToPoints(1)

            '___अन्य प्रिंट सेटिंग्स
            .Orientation = xlLandscape  '___लैंडस्केप
            .PaperSize = xlPaperA4      '___A4 आकार
            .Zoom = False               '___ज़ूम बंद करें
            .FitToPagesWide = 1         '___1 पेज चौड़ाई में फिट करें
            .FitToPagesTall = False     '___ऊंचाई स्वचालित है
            .CenterHorizontally = True  '___क्षैतिज रूप से केंद्रित करें
        End With
    End With

    MsgBox "प्रिंट सेटिंग्स के साथ एक नई शीट बनाई गई है।", vbInformation
End Sub

उपयोग का मामला 2: मार्जिन सेटिंग्स रीसेट करना

मार्जिन सेटिंग्स को Excel के डिफ़ॉल्ट वैल्यू पर रीसेट करने का एक फंक्शन।

Sub ResetMarginsToDefault()
    '___Excel की डिफ़ॉल्ट मार्जिन वैल्यू (इंच में)
    Const DEFAULT_TOP As Double = 0.75
    Const DEFAULT_BOTTOM As Double = 0.75
    Const DEFAULT_LEFT As Double = 0.7
    Const DEFAULT_RIGHT As Double = 0.7
    Const DEFAULT_HEADER As Double = 0.3
    Const DEFAULT_FOOTER As Double = 0.3

    With ActiveSheet.PageSetup
        .TopMargin = Application.InchesToPoints(DEFAULT_TOP)
        .BottomMargin = Application.InchesToPoints(DEFAULT_BOTTOM)
        .LeftMargin = Application.InchesToPoints(DEFAULT_LEFT)
        .RightMargin = Application.InchesToPoints(DEFAULT_RIGHT)
        .HeaderMargin = Application.InchesToPoints(DEFAULT_HEADER)
        .FooterMargin = Application.InchesToPoints(DEFAULT_FOOTER)
    End With

    MsgBox "मार्जिन डिफ़ॉल्ट वैल्यू पर रीसेट कर दिए गए हैं।", vbInformation
End Sub

उपयोग का मामला 3: उपयोगकर्ता इनपुट के साथ मार्जिन सेट करना

एक इंटरैक्टिव मैक्रो जो उपयोगकर्ताओं को मार्जिन वैल्यू इनपुट करने देता है।

Sub SetMarginsInteractive()
    Dim leftVal As Variant
    Dim rightVal As Variant
    Dim topVal As Variant
    Dim bottomVal As Variant

    '___उपयोगकर्ता से मार्जिन वैल्यू प्राप्त करें (सेंटीमीटर में)
    leftVal = InputBox("बायां मार्जिन दर्ज करें (cm):", "मार्जिन सेटिंग्स", "1.5")
    If leftVal = "" Then Exit Sub

    rightVal = InputBox("दायां मार्जिन दर्ज करें (cm):", "मार्जिन सेटिंग्स", "1.5")
    If rightVal = "" Then Exit Sub

    topVal = InputBox("ऊपरी मार्जिन दर्ज करें (cm):", "मार्जिन सेटिंग्स", "2")
    If topVal = "" Then Exit Sub

    bottomVal = InputBox("निचला मार्जिन दर्ज करें (cm):", "मार्जिन सेटिंग्स", "2")
    If bottomVal = "" Then Exit Sub

    '___इनपुट वैल्यू को मान्य करें
    If Not IsNumeric(leftVal) Or Not IsNumeric(rightVal) Or _
       Not IsNumeric(topVal) Or Not IsNumeric(bottomVal) Then
        MsgBox "कृपया संख्यात्मक वैल्यू दर्ज करें।", vbExclamation
        Exit Sub
    End If

    '___मार्जिन सेट करें
    With ActiveSheet.PageSetup
        .LeftMargin = Application.CentimetersToPoints(CDbl(leftVal))
        .RightMargin = Application.CentimetersToPoints(CDbl(rightVal))
        .TopMargin = Application.CentimetersToPoints(CDbl(topVal))
        .BottomMargin = Application.CentimetersToPoints(CDbl(bottomVal))
    End With

    MsgBox "मार्जिन सेट कर दिए गए हैं।", vbInformation
End Sub

उपयोग का मामला 4: वर्तमान मार्जिन सेटिंग्स प्राप्त करना और प्रदर्शित करना

वर्तमान शीट की मार्जिन सेटिंग्स की जांच करने के लिए एक मैक्रो।

Sub ShowCurrentMargins()
    Dim msg As String

    With ActiveSheet.PageSetup
        msg = "[वर्तमान मार्जिन सेटिंग्स]" & vbCrLf & vbCrLf
        msg = msg & "बायां मार्जिन: " & Format(.LeftMargin / 28.35, "0.00") & " cm" & vbCrLf
        msg = msg & "दायां मार्जिन: " & Format(.RightMargin / 28.35, "0.00") & " cm" & vbCrLf
        msg = msg & "ऊपरी मार्जिन: " & Format(.TopMargin / 28.35, "0.00") & " cm" & vbCrLf
        msg = msg & "निचला मार्जिन: " & Format(.BottomMargin / 28.35, "0.00") & " cm" & vbCrLf
        msg = msg & "हेडर: " & Format(.HeaderMargin / 28.35, "0.00") & " cm" & vbCrLf
        msg = msg & "फुटर: " & Format(.FooterMargin / 28.35, "0.00") & " cm"
    End With

    MsgBox msg, vbInformation, "मार्जिन सेटिंग्स"
End Sub
टिप

पॉइंट्स से सेंटीमीटर में कन्वर्ट करने के लिए, पॉइंट वैल्यू को 28.35 से विभाजित करें। अधिक सटीकता के लिए, आप Application.CentimetersToPoints(1) की वैल्यू से भी विभाजित कर सकते हैं।

मार्जिन सेटिंग्स को अन्य प्रिंट सेटिंग्स के साथ संयोजित करना

मार्जिन सेटिंग्स का उपयोग अन्य प्रिंट सेटिंग्स के साथ संयोजित करने पर अधिक प्रभावी ढंग से किया जा सकता है।

Sub CompletePrintSetup()
    With ActiveSheet.PageSetup
        '___मार्जिन सेटिंग्स
        .LeftMargin = Application.CentimetersToPoints(1.5)
        .RightMargin = Application.CentimetersToPoints(1.5)
        .TopMargin = Application.CentimetersToPoints(2)
        .BottomMargin = Application.CentimetersToPoints(2)
        .HeaderMargin = Application.CentimetersToPoints(1)
        .FooterMargin = Application.CentimetersToPoints(1)

        '___पेपर सेटिंग्स
        .PaperSize = xlPaperA4
        .Orientation = xlPortrait  '___पोर्ट्रेट

        '___प्रिंट एरिया
        .PrintArea = "A1:G50"

        '___टाइटल रो और कॉलम
        .PrintTitleRows = "$1:$2"  '___प्रत्येक पेज पर रो 1 और 2 प्रिंट करें
        .PrintTitleColumns = ""     '___कोई कॉलम दोहराव नहीं

        '___हेडर और फुटर
        .LeftHeader = "&D"         '___दिनांक
        .CenterHeader = "मासिक रिपोर्ट"
        .RightHeader = ""
        .LeftFooter = ""
        .CenterFooter = "&P / &N"  '___पेज नंबर / कुल पेज
        .RightFooter = ""

        '___अन्य सेटिंग्स
        .CenterHorizontally = True
        .CenterVertically = False
        .PrintGridlines = False
        .BlackAndWhite = False
    End With
End Sub

सामान्य त्रुटियां और समाधान

त्रुटि 1: मार्जिन बहुत बड़े हैं

जब कुल मार्जिन पेपर आकार से अधिक हो जाते हैं तो एक त्रुटि होती है।

Sub SafeSetMargins()
    On Error Resume Next

    With ActiveSheet.PageSetup
        .LeftMargin = Application.CentimetersToPoints(5)
        .RightMargin = Application.CentimetersToPoints(5)
    End With

    If Err.Number <> 0 Then
        MsgBox "मार्जिन सेट करने में विफल। वैल्यू बहुत बड़ी हो सकती हैं।", vbExclamation
        Err.Clear
    End If
End Sub

त्रुटि 2: शीट प्रोटेक्टेड है

प्रोटेक्टेड शीट पर, आप PageSetup बदलने में सक्षम नहीं हो सकते हैं।

Sub SetMarginsWithProtection()
    Dim ws As Worksheet
    Set ws = ActiveSheet

    '___यदि शीट प्रोटेक्टेड है तो अस्थायी रूप से अनप्रोटेक्ट करें
    If ws.ProtectContents Then
        ws.Unprotect Password:="password"  '___यदि पासवर्ड आवश्यक है
    End If

    With ws.PageSetup
        .LeftMargin = Application.CentimetersToPoints(1)
        .RightMargin = Application.CentimetersToPoints(1)
    End With

    '___पुनः प्रोटेक्ट करें (यदि आवश्यक हो)
    ws.Protect Password:="password"
End Sub

सारांश

इस लेख में VBA का उपयोग करके प्रिंट मार्जिन सेट करने का तरीका बताया गया है। PageSetup ऑब्जेक्ट की मार्जिन-संबंधित प्रॉपर्टीज का उपयोग करके, आप प्रिंट सेटिंग्स को कुशलतापूर्वक प्रबंधित कर सकते हैं।

यहां मुख्य बिंदु हैं:

  • मार्जिन पॉइंट्स में निर्दिष्ट किए जाते हैं; कन्वर्जन के लिए InchesToPoints और CentimetersToPoints फंक्शन का उपयोग करें
  • LeftMargin, RightMargin, TopMargin, BottomMargin के साथ चारों तरफ के मार्जिन सेट करें
  • HeaderMargin, FooterMargin के साथ हेडर और फुटर मार्जिन सेट करें
  • कई शीट पर बल्क सेटिंग्स के लिए For Each लूप का उपयोग करें
  • प्रोसेसिंग गति में सुधार के लिए अस्थायी रूप से ScreenUpdating बंद करें

अपने प्रिंटिंग कार्यों को सुव्यवस्थित करने के लिए इस ज्ञान का उपयोग करें।

#Excel VBA #प्रिंटिंग #PageSetup #मार्जिन #वर्कशीट