TOP
VBA Excel का उपयोग करके SQL क्वेरी
विवरण
बाहरी स्रोतों से वर्कशीट में डेटा प्राप्त करने के कई तरीके हैं Excel . इस आलेख में, हम देखेंगे कि डेटाबेस फ़ाइल से डेटा की क्वेरी कैसे करें MS Access और एक फ़ाइल से Excel का उपयोग करके एसक्यूएल में VBA . हाँ, हम इसे थोड़ा मिश्रित करने जा रहे हैं SQL साथ VBA ! और यह जितना आप सोच सकते हैं उससे बेहतर है!
SQL के लिए खड़ा है Structured Query Language (संरचित क्वेरी भाषा) और डेटाबेस से जानकारी प्राप्त करने के लिए उपयोग की जाने वाली भाषा है (जैसे MS Access, MS SQL Server, Oracle, Sybase, SAP, MySQL और दूसरे)।
आप इंटरनेट, टेक्स्ट फ़ाइलों या अन्य Excel से भी डेटा प्राप्त कर सकते हैं CSV फ़ाइलें.
1. Excel VBA से फ़ाइल MS Access तक SQL क्वेरी
इसलिए हमें एक डेटाबेस कनेक्शन (वेरिएबल) की आवश्यकता है varConn नीचे मैक्रो में) और एसक्यूएल क्वेरी (चर varSQL ) रिपोर्ट के लिए डेटाबेस से डेटा की पुनर्प्राप्ति को स्वचालित करने के लिए। नीचे दिए गए उदाहरण में है एसक्यूएल क्वेरी , जो MS Access में एक छोटे डेटाबेस से डेटा प्राप्त करता है।
क्लिक डेटाबेस लोड करें MS Access (test.mdb) .
MS Access फ़ाइल इस तरह दिखेगी:
आइए अपना मैक्रो लिखें जो निष्पादित होगा एसक्यूएल क्वेरी .
मेनू खोलें सेवा - मैक्रो - संपादक Visual Basic , नया मॉड्यूल डालें (मेन्यू Insert - Modle ) और वहां मैक्रो टेक्स्ट कॉपी करें:
- 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
Sub SQLQuery_1()
'moonexcel.com.ua
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 ". एक डायलॉग बॉक्स दिखाई देगा, उसे दबाएं डेटाबेस... , हमारी एक्सेस फ़ाइल देखें और क्लिक करें ОК .
अब हम देख सकते हैं कि हमारी मैक्रो क्वेरी ने कॉलम खींच लिए हैं Month , Product और City मेज से Sumproduct डेटाबेस से test.mdb Excel फ़ाइल करने के लिए।
2. VBA से बंद फ़ाइल Excel तक SQL क्वेरी
इसी प्रकार, हम एक नियमित Excel फ़ाइल से डेटा प्राप्त कर सकते हैं जैसे कि किसी डेटाबेस से। इसके लिए हमारे मैक्रो के कोड को थोड़ा दोबारा लिखना होगा और कनेक्शन ड्राइवर को Access से Excel में बदलना होगा।
हम तालिका निर्यात करते हैं Sumproduct 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
Sub SQLQuery_2()
'moonexcel.com.ua
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 या किसी अन्य एक्सटेंशन के साथ)। हम इसे ढूंढते हैं और चुनते हैं। चलो दबाओ ОК , और हमें वही डेटा मिलता है जो एक्सेस फ़ाइल से मिलता है।
विषय पर लेख: