प्रिंट मार्जिन
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बंद करें
अपने प्रिंटिंग कार्यों को सुव्यवस्थित करने के लिए इस ज्ञान का उपयोग करें।