पर डेटा निर्यात करने के लिए एक्सेल वीबीए का उपयोग कर मैं वर्तमान में वर्कशीट से एमएस एक्सेस डेटाबेस में डेटा निर्यात करने के लिए निम्नलिखित कोड का उपयोग कर रहा हूं, कोड प्रत्येक पंक्ति के माध्यम से लूपिंग कर रहा है और एमएस एक्सेस टेबल में डेटा डालने वाला है।एमएस एक्सेस टेबल
Public Sub TransData()
Application.ScreenUpdating = False
Application.EnableAnimations = False
Application.EnableEvents = False
Application.DisplayAlerts = False
ActiveWorkbook.Worksheets("Folio_Data_original").Activate
Call MakeConnection("fdMasterTemp")
For i = 1 To rcount - 1
rs.AddNew
rs.Fields("fdName") = Cells(i + 1, 1).Value
rs.Fields("fdDate") = Cells(i + 1, 2).Value
rs.Update
Next i
Call CloseConnection
Application.ScreenUpdating = True
Application.EnableAnimations = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Sub
Public Function MakeConnection(TableName As String) As Boolean
'*********Routine to establish connection with database
Dim DBFullName As String
Dim cs As String
DBFullName = Application.ActiveWorkbook.Path & "\FDData.mdb"
cs = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & DBFullName & ";"
Set cn = CreateObject("ADODB.Connection")
If Not (cn.State = adStateOpen) Then
cn.Open cs
End If
Set rs = CreateObject("ADODB.Recordset")
If Not (rs.State = adStateOpen) Then
rs.Open TableName, cn, adOpenKeyset, adLockOptimistic
End If
End Function
Public Function CloseConnection() As Boolean
'*********Routine to close connection with database
On Error Resume Next
If Not rs Is Nothing Then
rs.Close
End If
If Not cn Is Nothing Then
cn.Close
End If
CloseConnection = True
Exit Function
End Function
कोड से ऊपर रिकॉर्ड के कुछ सौ लाइनों के लिए ठीक काम करता है, लेकिन जाहिरा तौर पर यह 25000 के रिकॉर्ड की तरह, निर्यात करने के लिए और अधिक डेटा हो जाएगा, यह संभव है सभी रिकॉर्ड्स के माध्यम से लूपिंग के बिना निर्यात और केवल एक एसक्यूएल इंसर्ट स्टेटमेंट थोक में सभी डेटा डालने के लिए सुश्री एक्सेस टेबल में जाएं?
किसी भी मदद की बहुत सराहना की जाएगी।
संपादित करें: इस मुद्दे को हल
बस जानकारी है, तो किसी को भी इस बात के लिए करना चाहता है के लिए, मैं खोज की एक बहुत किया है और मेरे लिए काम ठीक हो के लिए निम्न कोड पाया, और यह असली तेजी की वजह से है एसक्यूएल सम्मिलित करें, (सिर्फ 3 सेकंड में 27,648 रिकॉर्ड !!!!):
Public Sub DoTrans()
Set cn = CreateObject("ADODB.Connection")
dbPath = Application.ActiveWorkbook.Path & "\FDData.mdb"
dbWb = Application.ActiveWorkbook.FullName
dbWs = Application.ActiveSheet.Name
scn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath
dsh = "[" & Application.ActiveSheet.Name & "$]"
cn.Open scn
ssql = "INSERT INTO fdFolio ([fdName], [fdOne], [fdTwo]) "
ssql = ssql & "SELECT * FROM [Excel 8.0;HDR=YES;DATABASE=" & dbWb & "]." & dsh
cn.Execute ssql
End Sub
फिर भी विशिष्ट क्षेत्रों को जोड़ने के लिए काम कर के बजाय का उपयोग कर "* का चयन करें" का नाम, क्षेत्र का नाम जोड़ने की विभिन्न तरीकों की कोशिश की लेकिन नहीं कर सकते यह अभी के लिए काम करता है।
@Fionnuala कोड ADO..the CreateObject ("ADODB.Connection") 'SCN =" प्रदाता उपयोग कर रहा है एडीओ वस्तु .. – Ahmed
एक .accdb फ़ाइल के लिए पैदा करेगा, का उपयोग करें = Microsoft.ACE.OLEDB। 12.0; डेटा स्रोत = "और dbpath' –
संपादन को उत्तर के रूप में पोस्ट किया जाना चाहिए। मुझे लगता है कि यह एक्सेल से डेटा या VBA का उपयोग कर टेक्स्ट फ़ाइलों से स्थानांतरित करने का सबसे अच्छा तरीका है। एक्सेल के नए संस्करणों के लिए एक्सेल 12.0 एक्सएलएम/एक्सेल 12.0 में उदाहरण के लिए कनेक्शन स्ट्रिंग को अपडेट करने की आवश्यकता है। और एईसी प्रदाता पाठ्यक्रम के जेईटी के बराबर है। – L42