आँकड़ों और विज्ञापन के लिए कुकीज़
हम आँकड़ों और विज्ञापन के लिए कुकीज़ इस्तेमाल करते हैं, दोनों Google को जाती हैं। मना करने से आपको दिखने वाली किसी चीज़ में कोई फ़र्क़ नहीं पड़ता।निजता पेज पढ़ें
XLSM
अंदर मैक्रो रखने वाली Excel वर्कबुक।
XLSM
XLSM एक कंटेनर है: एक खोल, जिसके अंदर वे धाराएँ रहती हैं जिन्हें किसी और ने एन्कोड किया है। इसका इस्तेमाल एडिटिंग के लिए होता है।
एक्सटेंशन .xlsm है और पूरा नाम Excel Macro-Enabled Workbook। दोनों उतना नहीं बताते जितना यह कि फ़ाइल अंदर क्या-क्या रख सकती है — और इस पन्ने का बाक़ी हिस्सा इसी के बारे में है।
इसे Microsoft ने 2007 में जारी किया था। विनिर्देश ECMA-376 है।
उम्र एक व्यावहारिक वजह से काम की है: फ़ॉर्मेट जितना पुराना, उतने ज़्यादा प्रोग्रामों को उसे सीखने का वक़्त मिला है।
यह पूरा प्रकाशित है, इसलिए कोई भी इसे देखकर अंदाज़ा लगाने के बजाय दस्तावेज़ पढ़कर लागू कर सकता है। यही वजह है कि यह फ़ॉर्मेट इतने सारे प्रोग्रामों में मिलता है, और यही वजह है कि बीस साल पहले लिखी गई फ़ाइलें आज भी खुल जाती हैं। पर विनिर्देश का प्रकाशित होना और उसका रॉयल्टी-मुक्त होना एक बात नहीं है: जहाँ फ़ॉर्मेट किसी कोडेक को अपने अंदर लपेटता है, वहाँ पेटेंट का लाइसेंस एक अलग सवाल है, और मानक उसका जवाब नहीं देता।
XLSM फ़ाइल एक पन्ने तक सीमित नहीं है, और जब इसे ऐसी चीज़ में बदला जाए जो सीमित है तो यह मायने रखता है: एक बार बदलने पर एक ही फ़ाइल निकलती है और उसमें एक ही पन्ना होता है — पहला वाला, बशर्ते कन्वर्टर पन्ना चुनने की सुविधा न देता हो।
XLSM फ़ाइल अपने साथ चलने वाला कोड ले जा सकती है, और अमूमन किसी का इस एक्सटेंशन से पाला पड़ने की वजह भी यही होती है: किसी मेल सर्वर या दस्तावेज़ पोर्टल ने इसे मना कर दिया। बिना मैक्रो वाले फ़ॉर्मेट में बदल लेना इससे निकलने का आम रास्ता है — और हाँ, उसके बाद मैक्रो नहीं बचते।
XLSM के अंदर एक स्प्रेडशीट होती है: कोशिकाएँ, सूत्र और उनके इर्द-गिर्द की शीटें।
यही तय करता है कि यह कैसे बदलता है: स्प्रेडशीट छपाई का इलाक़ा बन जाती है, और कॉलम कहाँ टूटेंगे यह फ़ैसला किसी न किसी को करना पड़ता है।
Microsoft Excel इसे पढ़ता है, और इसी तरह के ज़्यादातर दूसरे प्रोग्राम भी।
फ़ाइल न खुले तो कसूर फ़ॉर्मेट का शायद ही कभी होता है — अक्सर प्रोग्राम ही फ़ॉर्मेट से पुराना होता है। किसी पुरानी चीज़ में बदल लेना इससे निकलने का भरोसेमंद रास्ता है, और इस वेबसाइट का बाक़ी हिस्सा इसी के लिए है।
इसे कोई भी ब्राउज़र नहीं पढ़ता।
इसे बदलने की सबसे आम वजह यही है: फ़ॉर्मेट ख़राब है, ऐसा नहीं — बात यह है कि जहाँ आप फ़ाइल दिखाना चाहते हैं वह जगह उसे पढ़ ही नहीं सकती।
XLSM इसलिए बना है कि इसे खोला और बदला जाए। जब तक काम चल रहा है फ़ाइल इसी फ़ॉर्मेट में रखिए, और जब भी बनी हुई प्रति चाहिए हो, इसी से निर्यात कीजिए।
XLSM और XLSX एक ही फ़ॉर्मेट हैं। दोनों XML के ZIP पैकेज हैं, दोनों वही शीट, फ़ॉर्मूला और फ़ॉर्मेटिंग रखते हैं, और इकलौता फ़र्क़ यह है कि XLSM में VBA प्रोजेक्ट हो सकता है और XLSX में नहीं।
यही बँटवारा मुद्दा था। 2007 से पहले वर्कबुक बिना एक्सटेंशन में कोई इशारा दिए मैक्रो ढो सकती थी, और स्प्रेडशीट मालवेयर पहुँचाने के सबसे कारगर रास्तों में से एक थीं। एक्सटेंशन अलग करने का मतलब है पाने वाला बिना कुछ खोले देख सकता है कि फ़ाइल कोड होने का दावा करती है या नहीं।
VBA फ़ाइल सिस्टम, नेटवर्क और दूसरे ऐप्लिकेशन तक पहुँच वाली पूरी प्रोग्रामिंग भाषा है। मैक्रो उपयोगकर्ता जहाँ भी पहुँच सकता है वहाँ फ़ाइलें पढ़-लिख सकता है, डेटा बाहर भेज सकता है, प्रोग्राम चला सकता है, और दूसरे दस्तावेज़ बदल सकता है।
यही सावधानी की ईमानदार वजह है। भारी बहुमत मैक्रो किसी सहकर्मी का लिखा रिपोर्ट-स्वचालन है, जो ठीक वही करता है जो बताता है। जो अल्पमत नहीं है, उसकी क्षमताएँ वही हैं, और फ़ाइल कोड पढ़े बिना दोनों में फ़र्क़ करने का कोई तरीक़ा नहीं देती।
Excel तयशुदा तौर पर मैक्रो बंद रखता है और एक पट्टी दिखाता है। अगर फ़ाइल इंटरनेट या ईमेल अटैचमेंट से आई, Windows इसे एक zone फ़्लैग से चिह्नित भी करता है, और 2022 से Excel ऐसी फ़ाइलों में मैक्रो सीधे रोक देता है।
जिस फ़ाइल पर भरोसा है उसके लिए इरादा किया सुधार है फ़ाइल प्रॉपर्टी में unblock करना, या trusted location में रखना। जिस आदत से बचना चाहिए वह है बिना सोचे क्लिक करते जाना: यह रोक इसलिए है क्योंकि वह क्लिक कई असली घटनाओं का आख़िरी क़दम था।
VBA प्रोजेक्ट ZIP के भीतर बाइनरी धारा की तरह सहेजा जाता है — Office Open XML पैकेज का इकलौता हिस्सा जो पढ़ने लायक़ XML नहीं है। फ़ाइल का नाम .zip करके भीतर देखने पर शीट सादे पाठ में और मैक्रो बिना-पढ़ी जा सकने वाली blob की तरह दिखता है।
तो मैक्रो जाँचने का मतलब है Excel या LibreOffice में VBA एडिटर खोलना, जो ज़्यादातर लोग नहीं करेंगे और जो यह जानने का इकलौता भरोसेमंद तरीक़ा है कि वर्कबुक क्या करती है।
XLSM को XLSX की तरह सहेजना VBA प्रोजेक्ट हटा देता है और बाक़ी सब रखता है — शीट, फ़ॉर्मूला, फ़ॉर्मेटिंग, चार्ट, नाम वाली रेंज। Excel करने से पहले चेतावनी देता है, और वही चेतावनी पूरा लेन-देन है।
बाहर से मिली और सिर्फ़ संख्याएँ पढ़नी हों ऐसी वर्कबुक के लिए यही सही है, और ऐसी फ़ाइल के लिए बिलकुल ग़लत जिसका स्वचालन ही मक़सद है। फ़र्क़ सादा है: बटन दबाने पर कुछ करती वर्कबुक के लिए बदलना उसे तोड़ देता है।
भेजी, फ़ाइल की या छपने वाली किसी भी चीज़ के लिए PDF। नतीजा तय है, कोई निष्पादन योग्य सामग्री नहीं रखता, और एक ही क़दम में ले-आउट और मैक्रो दोनों सवाल हटा देता है। मैक्रो-चलित वर्कबुक से बनी रिपोर्ट बाँटने के लिए यह लगभग हमेशा सही आउटपुट है।
CSV जब गंतव्य डेटाबेस, स्क्रिप्ट या विश्लेषण पाइपलाइन हो। यह एक शीट के मूल्य ढोता है और बाक़ी कुछ नहीं — कोई फ़ॉर्मूला नहीं, कोई फ़ॉर्मेटिंग नहीं, कोई कोड नहीं।
VBA प्रोजेक्ट जो किसी विभाग के काम करने का तरीक़ा बन गई हो, वह एक देनदारी है जिसका नाम लेना चाहिए: कोड वर्शन कंट्रोल के लिए अपारदर्शी है, यह सिर्फ़ वहाँ चलता है जहाँ Excel चलता है, शीट का नाम बदलते ही टूट जाता है।
Microsoft की अपनी दिशा उस काम के लिए Office Scripts और Power Automate है, और Microsoft दुनिया के बाहर, फ़ाइल सीधे पढ़ने वाली भाषा में छोटी स्क्रिप्ट वही काम ऐसी फ़ाइलों में करती है जिन्हें आप diff कर सकते हैं।
| एक्सटेंशन | .xlsm |
|---|---|
| मीडिया टाइप | application/vnd.ms-excel.sheet.macroEnabled.12 |
| प्रकाशक | Microsoft |
| पहली बार प्रकाशित | 2007 |
| विनिर्देश | ECMA-376 |
बस इतना कि XLSM में VBA मैक्रो हो सकते हैं और XLSX में नहीं। बाक़ी दोनों फ़ॉर्मेट एक जैसे हैं — दोनों वही शीट, फ़ॉर्मूला और फ़ॉर्मेटिंग रखते XML के ZIP पैकेज हैं। अलग एक्सटेंशन इसलिए है ताकि पाने वाला बिना खोले देख सके कि फ़ाइल कोड होने का दावा करती है।
Excel तयशुदा तौर पर उन्हें बंद रखता है, और 2022 से इंटरनेट या ईमेल अटैचमेंट से आई फ़ाइलों में इन्हें सीधे रोक देता है। भरोसे वाली फ़ाइल के लिए, प्रॉपर्टी में इसे unblock कीजिए या trusted location में रखिए।
मैक्रो बंद रखकर खोलना उतना ही सुरक्षित है जितना XLSX खोलना। मैक्रो चालू करना असली फ़ैसला है, और VBA को फ़ाइल सिस्टम, नेटवर्क और दूसरे ऐप्लिकेशन तक पूरी पहुँच है। सिर्फ़ जाने-पहचाने मूल वाली फ़ाइल के लिए चालू कीजिए।
इसे XLSX की तरह सहेजिए। VBA प्रोजेक्ट हटा दिया जाता है और बाक़ी सब — शीट, फ़ॉर्मूला, फ़ॉर्मेटिंग, चार्ट — रखा जाता है। Excel पहले चेतावनी देता है, और वही चेतावनी पूरा काम है।
सिर्फ़ Excel या LibreOffice में VBA एडिटर खोलकर। कोड पैकेज के भीतर बाइनरी धारा की तरह सहेजा है, इसलिए .zip में नाम बदलने पर शीट पढ़ने लायक़ XML दिखती हैं और मैक्रो बिना-पढ़ी जा सकने वाली blob।
यह फ़ाइल खोलता है और डेटा रखता है, पर VBA भरोसे से नहीं चलाता — दोनों ऐप्लिकेशन अलग स्क्रिप्टिंग तंत्र इस्तेमाल करते हैं। सादे मैक्रो से आगे कुछ भी दोबारा लिखना पड़ता है, अनुवाद नहीं।