बाहरी स्रोतों से डेटा को Excel शीट में प्राप्त करने के कई तरीके हैं। इस आलेख में, हम देखेंगे कि एमएस एक्सेस डेटाबेस फ़ाइल से और Excel फ़ाइल से VBA में SQL का उपयोग करके डेटा को कैसे क्वेरी किया जाए। हाँ, हम कुछ SQL को VBA के साथ मिलाने जा रहे हैं! और यह जितना आप सोच सकते हैं उससे बेहतर है!
SQL का मतलब स्ट्रक्चर्ड क्वेरी लैंग्वेज है और यह एक ऐसी भाषा है जिसका उपयोग डेटाबेस से जानकारी प्राप्त करने के लिए किया जाता है (जैसे कि MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL और अन्य)।
आप इंटरनेट, टेक्स्ट फ़ाइलें, या अन्य Excel या CSV फ़ाइलों से भी डेटा प्राप्त कर सकते हैं।
इसलिए हमें रिपोर्ट के लिए डेटाबेस से डेटा की पुनर्प्राप्ति को स्वचालित करने के लिए एक डेटाबेस कनेक्शन (नीचे मैक्रो में वेरिएबल varConn) और एक SQL क्वेरी (वेरिएबल varSQL) की आवश्यकता है। नीचे दिया गया उदाहरण एक SQL क्वेरी है जो MS Access में एक छोटे डेटाबेस से डेटा पुनर्प्राप्त करता है।
एमएस एक्सेस डेटाबेस डाउनलोड करें पर क्लिक करें। MS Access फ़ाइल इस तरह दिखेगी:
आइए अपना मैक्रो लिखें जो SQL क्वेरी निष्पादित करेगा।
मेनू खोलें सेवा - मैक्रोज़ - संपादक Visual Basic, insert a new मॉड्यूल (सम्मिलित करें - मॉड्यूल मेनू) और वहां मैक्रो टेक्स्ट कॉपी करें:
Sub SQLQuery_1() Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Access Driver (*.mdb, *.accdb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
सहेजें पर क्लिक करें और Excel पर वापस लौटें। मेनू व्यू - मैक्रोज़ (Alt+F8) में हमारे मैक्रो का नाम "SQLQuery_1" चुनें। एक संवाद बॉक्स दिखाई देगा, डेटाबेस... पर क्लिक करें, हमारी Access फ़ाइल देखें और ठीक पर क्लिक करें।
अब हम देख सकते हैं कि हमारी मैक्रो क्वेरी ने test.mdb डेटाबेस से Sumproduct तालिका से Month, उत्पाद और शहर कॉलम को Excel फ़ाइल में खींच लिया है।
इसी प्रकार, हम एक नियमित Excel फ़ाइल से डेटा प्राप्त कर सकते हैं जैसे कि किसी डेटाबेस से। इसके लिए, हमें अपने मैक्रो कोड को थोड़ा फिर से लिखना होगा और कनेक्शन ड्राइवर को Access से Excel में बदलना होगा।
हम Sumproduct तालिका को Access से Excel में निर्यात करते हैं और फ़ाइल को सहेजते हैं। इसके बाद, हम अपना बदला हुआ कोड एक नए मॉड्यूल में डालते हैं और मैक्रो चलाते हैं:
Sub SQLQuery_2() Dim varConn As String Dim varSQL As String Range("A1").CurrentRegion.ClearContents varConn = "ODBC;Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)}" varSQL = "SELECT Month, Product, City FROM Sumproduct" With ActiveSheet.QueryTables.Add(Connection:=varConn, Destination:=Range("A1")) .CommandText = varSQL .Refresh BackgroundQuery:=False End With End Sub
एक विंडो दिखाई देगी जहां हम अपनी Excel फ़ाइल का चयन कर सकते हैं (इसे Sumproduct.xlsx या किसी भिन्न एक्सटेंशन के साथ कहा जाना चाहिए)। हम इसे ढूंढते हैं और चुनते हैं। ओके पर क्लिक करें, और हमें एक्सेस फ़ाइल जैसा ही डेटा मिलता है।