ChatGPT said:
बहुत बढ़िया — नीचे एक CorelDRAW VBA (macro) दिया है जो किसी चुनी हुई फोटो को A4 पेज पर grid में replicate कर देगा। यह macro परमीटर (photo width/height, rows, cols, horizontal/vertical gap) पूछता है — default रसायन (default) 30×40 mm, 7 columns × 6 rows = 42 फोटो पर रखा गया है (A4 पर ठीक से फिट होने के लिए ये default चुना गया है)। आप चाहें तो width/height और gaps बदल सकते हैं।
नोट: Macro CorelDRAW के VBA environment में चलेगा (CorelDRAW X4–2020 आदि में VBA सपोर्ट सामान्यतः मिलता है). पहले पेज यूनिट मिलिमीटर (mm) पर सेट कर देता है ताकि mm में values दें।
Macro (VBA) — copy & paste करें
Sub MakePassportSheet42()
' CorelDRAW VBA macro: take selected shape (photo) and make a grid sheet
On Error GoTo ErrHandler
Dim doc As Document
Dim pg As Page
Dim src As Shape
Dim newS As Shape
Dim i As Long, j As Long
Dim photoW As Double, photoH As Double
Dim cols As Long, rows As Long
Dim hGap As Double, vGap As Double
Dim pageW As Double, pageH As Double
Dim totalW As Double, totalH As Double
Dim startX As Double, startY As Double
Set doc = ActiveDocument
Set pg = ActivePage
' Ensure units are millimeters
doc.Unit = cdrMillimeter
If ActiveSelection.Shapes.Count <> 1 Then
MsgBox "कृपया पहले एक फोटो/इमेज सलेक्ट करें (एक ही)।", vbExclamation, "Select one image"
Exit Sub
End If
Set src = ActiveSelection.Shapes(1)
' --- Parameters (user can change defaults) ---
photoW = Val(InputBox("Photo width (mm):", "Photo width", "30"))
If photoW <= 0 Then photoW = 30
photoH = Val(InputBox("Photo height (mm):", "Photo height", "40"))
If photoH <= 0 Then photoH = 40
cols = CLng(Val(InputBox("Columns (number):", "Columns", "7")))
If cols < 1 Then cols = 7
rows = CLng(Val(InputBox("Rows (number):", "Rows", "6")))
If rows < 1 Then rows = 6
hGap = Val(InputBox("Horizontal gap between photos (mm):", "H gap", "0"))
If hGap < 0 Then hGap = 0
vGap = Val(InputBox("Vertical gap between photos (mm):", "V gap", "0"))
If vGap < 0 Then vGap = 0
pageW = pg.SizeWidth ' in mm
pageH = pg.SizeHeight ' in mm
totalW = cols * photoW + (cols - 1) * hGap
totalH = rows * photoH + (rows - 1) * vGap
If totalW > pageW Or totalH > pageH Then
If MsgBox("चेतावनी: चुनी हुई settings A4 पेज पर फिट नहीं बैठती (हो सकता है कट जाए)। Continue करें?", vbYesNo + vbExclamation, "Too large") = vbNo Then Exit Sub
End If
' center the grid on the page
startX = (pageW - totalW) / 2
startY = (pageH - totalH) / 2
' Resize the source to requested size (units = mm)
src.SizeWidth = photoW
src.SizeHeight = photoH
' Place copies
For i = 0 To rows - 1
For j = 0 To cols - 1
If i = 0 And j = 0 Then
' first one: move the original
src.SetPosition startX + j * (photoW + hGap), startY + i * (photoH + vGap)
Else
Set newS = src.Duplicate
newS.SizeWidth = photoW
newS.SizeHeight = photoH
newS.SetPosition startX + j * (photoW + hGap), startY + i * (photoH + vGap)
End If
Next j
Next i
MsgBox "Grid complete: " & (cols * rows) & " photos placed.", vbInformation, "Done"
Exit Sub
ErrHandler:
MsgBox "कुछ त्रुटि हुई: " & Err.Number & " - " & Err.Description, vbCritical, "Error"
End Sub
कैसे use करें (स्टेप-बाय-स्टेप)
CorelDRAW में अपना A4 डॉक खोलें (Page size = A4) और जिस फोटो को replicate करना चाहते हैं उसे import/placed करें।
उस फोटो को select करें (सिर्फ़ 1 shape selected हो)।
Tools → Macros → Macro Editor (या Alt+F11) खोलें।
Project में नया Module बनाएं (Insert → Module) और ऊपर दिया गया पूरा कोड paste कर दें।
Macro save करें और Macro dialog (Tools → Macros → Run Macro) से
MakePassportSheet42रन करें।Macro आपसे photo width/height, rows/cols, गेप पूछेगा — default दिए गए हैं (30 x 40 mm, 7 cols x 6 rows) — बस OK कर दें या अपनी values डालें।
Macro grid बनाकर पेज पर photos place कर देगा।
उपयोगी टिप्स / बदलाव
अगर आप मानक भारत का passport photo (35×45 mm) रखना चाहें, तो ध्यान रहे: 7×6 arrangement A4 पर फिट नहीं आएगा — इसलिए macro में columns/rows या gaps adjust करें। उदाहरण: 5 columns × 8 rows या 6×7 आदि ट्राय कर सकते हैं लेकिन पहले macro में preview करके चेतावनी दिखेगी।
आप horizontal/vertical gap देकर crop-mark वाली sheet बना सकते हैं (e.g., hGap=2 mm, vGap=2 mm)।
अगर आप चाहते हैं कि macro image को tracing/clip करें और border add करे, मैं वह भी add कर दूँ — बताइए तो जोड़ दूँ।
अगर आप चाहें तो मैं:
वही macro को automatic करके बिना inputbox के (fixed 42 pcs with exact fit) बना दूँ, या
एक और macro दूँ जो एक folder से एक photo ले के सीधे पूरे पेज भर दे, या
borders और cut-marks भी add कर दूँ — बताइए कौन सा चाहिए, मैं तुरंत दे दूँगा।


0 Comments