यह ट्यूटोरियल एक्सेल से एक्सेस टेबल में डेटा आयात करने के तरीके और एक्सेल में एक्सेस ऑब्जेक्ट्स (क्वेरी, रिपोर्ट, टेबल या फॉर्म) को एक्सपोर्ट करने के तरीकों को कवर करेगा।
एक्सेस में एक्सेल फ़ाइल आयात करें
एक्सेस में एक्सेल फ़ाइल आयात करने के लिए, का उपयोग करें एसीआयात का विकल्प DoCmd.Transferस्प्रेडशीट :
DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, "Table1", "C:\Temp\Book1.xlsx", True
या आप उपयोग कर सकते हैं DoCmd.TransferText CSV फ़ाइल आयात करने के लिए:
DoCmd.TransferText acLinkDelim, , "Table1", "C:\Temp\Book1.xlsx", True
एक्सेस फ़ंक्शन के लिए एक्सेल आयात करें
इस फ़ंक्शन का उपयोग किसी एक्सेल फ़ाइल या सीएसवी फ़ाइल को एक्सेस टेबल में आयात करने के लिए किया जा सकता है:
पब्लिक फंक्शन इंपोर्टफाइल (स्ट्रिंग के रूप में फाइलनाम, बूलियन के रूप में हैसफिल्डनाम, स्ट्रिंग के रूप में टेबलनाम) बूलियन के रूप में 'उदाहरण उपयोग: कॉल इम्पोर्टफाइल ("एक्सेल फाइल का चयन करें", "एक्सेल फाइल्स", "*.एक्सएलएसएक्स", "सी: \", ट्रू ,True, "ExcelImportTest", True, True,false,True) एरर GoTo err_handler पर यदि (राइट (फाइलनाम, 3) = "xls") या ((राइट (फाइलनाम, 4) = "xlsx")) तो DoCmd. ट्रांसफरस्प्रेडशीट acImport, acSpreadsheetTypeExcel12, TableName, Filename, blnHasFieldNames End यदि (दाएं (फ़ाइल नाम, 3) = "csv") तो DoCmd.TransferText acLinkDelim, , TableName, Filename, True End If Exit_Thing: 'क्लीन अप' चेक करें कि क्या हमारा लिंक इन है एक्सेल टेबल पहले से मौजूद है … और इसे हटा दें यदि ऐसा है तो ऑब्जेक्टएक्सिस्ट्स ("टेबल", टेबलनाम) = ट्रू तो ड्रॉपटेबल (टेबलनाम) सेट कॉलवर्कशीट्स = कुछ भी नहीं बाहर निकलें फ़ंक्शन err_handler: यदि (Err.Number = 3086 या Err.Number = 3274 या Err. संख्या = ३०७३) और errCount <3 फिर errCount = errCount + 1 ElseIf Err.Number = ३१२७ फिर MsgBox "सभी टैब में फ़ील्ड समान हैं। कृपया सुनिश्चित करें कि प्रत्येक शीट यदि आप एकाधिक आयात करना चाहते हैं, तो सटीक कॉलम नाम हैं", vbcritical, "मल्टीशीट समान नहीं हैं" ImportFile = False GoTo Exit_Thing Else MsgBox Err.Number & "-" & Err.Description ImportFile = False GoTo Exit_Thing Resume End If End Function
आप इस तरह के फ़ंक्शन को कॉल कर सकते हैं:
निजी उप ImportFile_Example () VBA_Access_ImportExport.ImportFile("C:\Temp\Book1.xlsx", True, "Imported_Table_1") एंड सब पर कॉल करें
नई एक्सेल फ़ाइल में वीबीए निर्यात तक पहुंचें
एक एक्सेस ऑब्जेक्ट को एक नई एक्सेल फ़ाइल में निर्यात करने के लिए, का उपयोग करें DoCmd.OutputTo विधि या DoCmd.Transferस्प्रेडशीट विधि:
एक्सेल में निर्यात क्वेरी
VBA कोड की यह पंक्ति DoCmd.OutputTo का उपयोग करके एक्सेल को एक क्वेरी निर्यात करेगी:
DoCmd.OutputTo acOutputQuery, "Query1", acFormatXLSX, "c:\temp\ExportedQuery.xls"
या आप इसके बजाय DoCmd.TransferSpreadsheet विधि का उपयोग कर सकते हैं:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "Query1", "c:\temp\ExportedQuery.xls", True
ध्यान दें: यह कोड XLSX प्रारूप में निर्यात करता है। इसके बजाय आप इसके बजाय CSV या XLS फ़ाइल स्वरूप में निर्यात करने के लिए तर्कों को अपडेट कर सकते हैं (उदा. acFormatXLSX प्रति acFormatXLS).
एक्सेल में निर्यात रिपोर्ट
कोड की यह पंक्ति DoCmd.OutputTo का उपयोग करके एक्सेल को एक रिपोर्ट निर्यात करेगी:
DoCmd.OutputTo acOutputReport, "Report1", acFormatXLSX, "c:\temp\ExportedReport.xls"
या आप इसके बजाय DoCmd.TransferSpreadsheet विधि का उपयोग कर सकते हैं:
DoCmd.Transferस्प्रेडशीट acExport, acSpreadsheetTypeExcel8, "Report1", "c:\temp\ExportedReport.xls", ट्रू
एक्सेल में निर्यात तालिका
कोड की यह पंक्ति DoCmd.OutputTo का उपयोग करके Excel में एक तालिका निर्यात करेगी:
DoCmd.OutputTo acOutputTable, "Table1", acFormatXLSX, "c:\temp\ExportedTable.xls"
या आप इसके बजाय DoCmd.TransferSpreadsheet विधि का उपयोग कर सकते हैं:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "Table1", "c:\temp\ExportedTable.xls", True
एक्सेल में निर्यात प्रपत्र
कोड की यह पंक्ति DoCmd.OutputTo का उपयोग करके एक्सेल को एक फॉर्म निर्यात करेगी:
DoCmd.OutputTo acOutputForm, "Form1", acFormatXLSX, "c:\temp\ExportedForm.xls"
या आप इसके बजाय DoCmd.TransferSpreadsheet विधि का उपयोग कर सकते हैं:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "Form1", "c:\temp\ExportedForm.xls", True
एक्सेल फ़ंक्शंस में निर्यात करें
ये एक लाइन कमांड एक नई एक्सेल फाइल को एक्सपोर्ट करने के लिए बहुत अच्छा काम करती है। हालांकि, वे मौजूदा कार्यपुस्तिका में निर्यात करने में सक्षम नहीं होंगे। नीचे दिए गए अनुभाग में हम ऐसे कार्यों का परिचय देते हैं जो आपको अपने निर्यात को मौजूदा एक्सेल फ़ाइल में जोड़ने की अनुमति देते हैं।
उसके नीचे, हमने नई एक्सेल फ़ाइलों को निर्यात करने के लिए कुछ अतिरिक्त फ़ंक्शन शामिल किए हैं, जिसमें त्रुटि प्रबंधन और बहुत कुछ शामिल हैं।
मौजूदा एक्सेल फ़ाइल में निर्यात करें
उपरोक्त कोड उदाहरण एक्सेस ऑब्जेक्ट्स को एक नई एक्सेल फ़ाइल में निर्यात करने के लिए बहुत अच्छा काम करते हैं। हालांकि, वे मौजूदा कार्यपुस्तिका में निर्यात करने में सक्षम नहीं होंगे।
किसी मौजूदा एक्सेल कार्यपुस्तिका में एक्सेस ऑब्जेक्ट निर्यात करने के लिए हमने निम्नलिखित फ़ंक्शन बनाया है:
पब्लिक फंक्शन AppendToExcel (स्ट्रिंग के रूप में strObjectType, स्ट्रिंग के रूप में strObjectName, स्ट्रिंग के रूप में strSheetName, स्ट्रिंग के रूप में strFileName) डीएओ के रूप में मंद पहला। एक्सेल के रूप में रिकॉर्डसेट मंद ApXL। एक्सेल के रूप में अनुप्रयोग मंद xlWBk। एक्सेल के रूप में वर्कबुक मंद xlWSh। लंबा = -4161 कॉन्स्ट xlCenter जितना लंबा = -4108 कॉन्स्ट xl बॉटम जितना लंबा = -4107 कॉन्स्ट xl लंबे समय तक निरंतर = 1 केस चुनें strObjectType केस "टेबल", "क्वेरी" सेट rst = CurrentDb.OpenRecordset(strObjectName, dbOpenDynaset, dbSeeChanges) केस "फॉर्म" सेट rst = फॉर्म (strObjectName)। रिकॉर्डसेटक्लोन केस "रिपोर्ट" सेट rst = CurrentDb.OpenRecordset (रिपोर्ट्स (strObjectName)। रिकॉर्डसोर्स, dbOpenDynaset, dbSeeChanges) एंड सिलेक्ट करें यदि rst.RecordCount = 0 तो MsgBox "कोई रिकॉर्ड निर्यात नहीं किया जाना है ।", vbInformation, GetDBTitle अन्यथा त्रुटि पर फिर से शुरू करें अगला सेट ApXL = GetObject (, "Excel.Application") यदि Err.Number 0 फिर सेट करें ApXL = CreateObject ("Excel.Application") समाप्त हो तो Err.Clear ApXL.Visible = False xlWBk = ApXL.Workbooks.Open(strFil .) सेट करें eName) सेट करें xlWSh = xlWBk.Sheets.Add xlWSh.Name = left(strSheetName, 31) xlWSh.Range("A1"). Select Do तक intCount = rst.fields.Count ApXL.ActiveCell = rst.fields(intCount). नाम ApXL.ActiveCell.Offset(0, 1). चयन करें intCount = intCount + 1 लूप rst.MoveFirst xlWSh.Range("A2").CopyFromRecordset rst with ApXL .Range("A1").Select .Range(.Selection, .Selection.End(xlToRight)).Select .Selection.Interior.Pattern = xlSolid.Selection.Interior.PatternColorIndex = xlAutomatic .Selection.Interior.TintAndShade = -0.25 .Selection.Interior =.PatternTintAndShade = 0 .Selection.Borders xlNone .Selection.AutoFilter .Cells.EntireColumn.AutoFit.Cells.EntireRow.AutoFit.Range("B2"). Select .ActiveWindow.FreezePanes = True .ActiveSheet.Cells.Select .ActiveSheet.Cells.WrapTexte = False.Cells.ActiveSheet.Cells.WrapTexte = False.Cells. .EntireColumn.AutoFit xlWSh.Range("A1"). Select .Visible = True End with 'xlWB.Close True' Set xlWB = कुछ भी नहीं 'APXL.Quit' Set ApXL = कुछ भी अंत नहीं है तो अंत फंक्शन
आप इस तरह के फ़ंक्शन का उपयोग कर सकते हैं:
निजी उप परिशिष्ट ToExcel_Example () VBA_Access_ImportExport.ExportToExcel ("तालिका", "तालिका 1", "VBASheet", "C:\Temp\Test.xlsx") अंत उप पर कॉल करें
ध्यान दें कि आपको परिभाषित करने के लिए कहा गया है:
- आउटपुट के लिए क्या? तालिका, रिपोर्ट, प्रश्न या प्रपत्र
- वस्तु का नाम
- आउटपुट शीट का नाम
- आउटपुट फ़ाइल पथ और नाम।
एक्सेल में SQL क्वेरी निर्यात करें
इसके बजाय आप एक समान फ़ंक्शन का उपयोग करके SQL क्वेरी को Excel में निर्यात कर सकते हैं:
पब्लिक फंक्शन AppendToExcelSQLStatemet (स्ट्रिंग के रूप में strsql, स्ट्रिंग के रूप में strSheetName, स्ट्रिंग के रूप में strFileName) स्ट्रिंग के रूप में मंद strQueryName एक्सेल के रूप में मंद ApXL। एक्सेल के रूप में अनुप्रयोग मंद xlWBk। एक्सेल के रूप में वर्कबुक मंद xlWSh। वर्कशीट डिम इंटकाउंट के रूप में लंबा = -4108 कॉन्स्ट xl नीचे लंबे समय तक = -4107 कॉन्स्ट xlVAlignCenter = -4108 कॉन्स्टेंट xl के रूप में लंबा = 1 मंद qdf DAO के रूप में। QueryDef Dim rst DAO के रूप में। रिकॉर्डसेट strQueryName = "tmpQueryToExportToExcel" यदि ObjectExists ("क्वेरी", strQueryName) तो CurrentDb.QueryDefs.Delete strQueryDefs. अंत अगर सेट qdf = CurrentDb.CreateQueryDef(strQueryName, strsql) सेट rst = CurrentDb.OpenRecordset(strQueryName, dbOpenDynaset) यदि rst.RecordCount = 0 तो MsgBox "कोई रिकॉर्ड निर्यात नहीं किया जाना है।", vbInformation, GetDBTitle और त्रुटि पर अगला सेट फिर से शुरू करें ApXL = GetObject(, "Excel.Application") यदि Err.Number 0 तब सेट ApXL = CreateObject ("Excel.Application") समाप्त होता है यदि Err.Clear ApXL.Visible = False Set xlWBk = ApXL.Workbooks.Open(strFileName) सेट xlWSh = xlWBk.शीट s.Add xlWSh.Name = लेफ्ट(strSheetName, 31) xlWSh.Range("A1")। Select Do तक intCount = rst.fields.Count ApXL.ActiveCell = rst.fields(intCount).Name ApXL.ActiveCell.Offset( 0, 1)। चयन करें intCount = intCount + 1 लूप rst.MoveFirst xlWSh.Range("A2").CopyFromRecordset rst with ApXL .Range("A1").Select .Range(.Selection, .Selection.End(xlToRight) ).Select .Selection.Interior.Pattern = xlSolid .Selection.Interior.PatternColorIndex = xlAutomatic .Selection.Interior.TintAndShade = -0.25 .Selection.Interior.PatternTintAndShade = 0 .Selection.Borders.LineStyle = xlNone। .एंटायर कॉलम ("A1")। चुनें। दृश्यमान = 'xlWB के साथ ट्रू एंड। क्लोज ट्रू' सेट xlWB = कुछ भी नहीं 'APXL। छोड़ो' सेट एपीएक्सएल = कुछ भी समाप्त नहीं है अगर अंत समारोह
इस तरह कहा जाता है:
निजी उप AppendToExcelSQLStatemet_Example() VBA_Access_ImportExport.ExportToExcel पर कॉल करें ("तालिका 1 से चुनें *", "VBASheet", "C:\Temp\Test.xlsx") एंड सब
जहां आपको इनपुट करने के लिए कहा जाता है:
- एसक्यूएल क्वेरी
- आउटपुट शीट का नाम
- आउटपुट फ़ाइल पथ और नाम।
नई एक्सेल फ़ाइल में निर्यात करने का कार्य
ये फ़ंक्शन आपको एक्सेस ऑब्जेक्ट को एक नई Excel कार्यपुस्तिका में निर्यात करने की अनुमति देते हैं। दस्तावेज़ के शीर्ष पर सरल एकल पंक्तियों की तुलना में आप उन्हें अधिक उपयोगी पा सकते हैं।
पब्लिक फंक्शन ExportToExcel (स्ट्रिंग के रूप में strObjectType, स्ट्रिंग के रूप में strObjectName, स्ट्रिंग के रूप में वैकल्पिक strSheetName, स्ट्रिंग के रूप में वैकल्पिक strFileName) DAO के रूप में मंद पहला। ऑब्जेक्ट डिम xlWBk के रूप में ऑब्जेक्ट मंद xlWSh के रूप में रिकॉर्ड्स मंद ApXL ऑब्जेक्ट मंद के रूप में पूर्णांक के रूप में पूर्णांक xlToRight के रूप में लंबा = - 4161 Const xlCenter जितना लंबा = -4108 Const xlBottom as Long = -4107 Const xlContinuous as Long = 1 त्रुटि पर GoTo ExportToExcel_Err DoCmd.Hourglass ट्रू सेलेक्ट केस strObjectType केस "टेबल", "क्वेरी" सेट rst = CurrentDb.OpenRecordset(strObjectName, dbOpenDynaset , dbSeeChanges) केस "फॉर्म" सेट rst = Forms(strObjectName).RecordsetClone Case "Report" सेट rst = CurrentDb.OpenRecordset(Reports(strObjectName).RecordSource, dbOpenDynaset, dbSeeChanges) End Select if rst.RecordCount = 0 फिर MsgBox "No निर्यात किए जाने वाले रिकॉर्ड।", vbInformation, GetDBTitle DoCmd.Hourglass अन्यथा त्रुटि पर फिर से शुरू करें अगला सेट ApXL = GetObject (, "Excel.Application") यदि Err.Number 0 तब सेट करें ApXL = CreateObject ("Excel.Application") समाप्त होता है यदि एरर। त्रुटि पर जाएं ExportToExcel_Err सेट करें xlWBk = ApXL.Workbooks। ApXL जोड़ें। दृश्यमान = गलत सेट xlWSh = xlWBk। वर्कशीट ("शीट 1") यदि लेन (strSheetName)> 0 तो xlWSh.Name = बायां (strSheetName, 31) समाप्त होता है यदि xlWSh .रेंज ("ए 1")। चयन करें जब तक intCount = rst.fields। ApXL की गणना करें। ActiveCell = rst.fields (intCount)। नाम ApXL.ActiveCell.Offset (0, 1)। चुनें intCount = intCount + 1 लूप rst। MoveFirst xlWSh.Range("A2").CopyFromRecordset rst with ApXL। आंतरिक। पैटर्न रंग इंडेक्स = xl स्वचालित। चयन। आंतरिक। टिंट और शेड = -0.25। चयन। आंतरिक। पैटर्न टिंट और शेड = 0। चयन। सीमाएं। लाइन स्टाइल = xl कोई नहीं। चयन। ऑटो फ़िल्टर। सेल। संपूर्ण कॉलम। ऑटोफिट। ऑटोएंग। B2")। Select .ActiveWindow.FreezePanes = True .ActiveSheet.Cells.Select .ActiveSheet.Cells.WrapText = False .ActiveSheet.Cells.EntireColumn.AutoFit xlWSh.Range("A1"). Select .Visible = True End Wi वें पुनः प्रयास करें: यदि FileExists(strFileName) तो strFileName को समाप्त करें यदि strFileName "" तो xlWBk.SaveAs strFileName, FileFormat:=56 End यदि rst.Close rst = कुछ भी DoCmd नहीं है। यदि ExportToExcel_Exit: DoCmd.Hourglass गलत निकास फ़ंक्शन ExportToExcel_Err: DoCmd.SetWarnings True MsgBox Err.Description, vbExclaration, Err.Number DoCmd.Hourglass गलत रिज्यूमे ExportToExcel_Exit एंड फंक्शन
समारोह को इस तरह कहा जा सकता है:
निजी उप ExportToExcel_Example () VBA_Access_ImportExport.ExportToExcel ("तालिका", "तालिका 1", "VBASheet") अंत उप पर कॉल करें