Экспорт данных из Excel в Access с помощью VBA. Экспорт из excel в access vba


Экспорт данных из Excel в Access с помощью VBA

У меня есть таблица в файле Excel с некоторыми данными, и я хочу экспортировать эти данные в свою базу данных по Access (в конкретной таблице в моей базе данных под названием «Качество воды») с помощью VBA кода, чтобы не открывать мою базу данных каждый раз, когда я хочу представить на ней больше данных.

На данный момент у меня есть этот код, но он не работает ...

Sub Button14_Click() ' Macro purpose: To add record to Access database using ADO and SQL ' NOTE: Reference to Microsoft ActiveX Data Objects Libary required ' Exports data from the active worksheet to a table in an Access database 'Dim cnt As New ADODB.Connection 'Dim rst As New ADODB.Recordset Dim cnt As DAO.Database Dim rst As Recordset Dim dbPath As String Dim tblName As String Dim rngColHeads As Range Dim rngTblRcds As Range Dim colHead As String Dim rcdDetail As String Dim ch As Integer Dim cl As Integer Dim notNull As Boolean Dim sConnect As String 'Set the string to the path of your database as defined on the worksheet dbPath = "C:\Documents and Settings\Administrador\Mis documentos\MonEAU\modelEAU Database V.2.accdb" tblName = "Water Quality" Set rngColHeads = ActiveSheet.Range("tblHeadings") Set rngTblRcds = ActiveSheet.Range("tblRecords") 'Set the database connection string here sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & dbPath & "';" 'For use with *.accdb files ' sConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";" 'For use with *.mdb files 'Concatenate a string with the names of the column headings colHead = " (" For ch = 1 To rngColHeads.Count colHead = colHead & rngColHeads.Columns(ch).Value Select Case ch Case Is = rngColHeads.Count colHead = colHead & ")" Case Else colHead = colHead & "," End Select Next ch 'Open connection to the database cnt.Open sConnect 'Begin transaction processing On Error GoTo EndUpdate cnt.BeginTrans 'Insert records into database from worksheet table For cl = 1 To rngTblRcds.Rows.Count 'Assume record is completely Null, and open record string for concatenation notNull = False rcdDetail = "('" 'Evaluate field in the record For ch = 1 To rngColHeads.Count Select Case rngTblRcds.Rows(cl).Columns(ch).Value 'if empty, append value of null to string Case Is = Empty Select Case ch Case Is = rngColHeads.Count rcdDetail = Left(rcdDetail, Len(rcdDetail) - 1) & "NULL)" Case Else rcdDetail = Left(rcdDetail, Len(rcdDetail) - 1) & "NULL,'" End Select 'if not empty, set notNull to true, and append value to string Case Else notNull = True Select Case ch Case Is = rngColHeads.Count rcdDetail = rcdDetail & rngTblRcds.Rows(cl).Columns(ch).Value & "')" Case Else rcdDetail = rcdDetail & rngTblRcds.Rows(cl).Columns(ch).Value & "','" End Select End Select Next ch 'If record consists of only Null values, do not insert it to table, otherwise 'insert the record Select Case notNull Case Is = True rst.Open "INSERT INTO " & tblName & colHead & " VALUES " & rcdDetail, cnt Case Is = False 'do not insert record End Select Next cl EndUpdate: 'Check if error was encounted If Err.Number <> 0 Then 'Error encountered. Rollback transaction and inform user On Error Resume Next cnt.RollbackTrans MsgBox "There was an error. Update was not succesful!", vbCritical, "Error!" Else On Error Resume Next cnt.CommitTrans End If 'Close the ADO objects cnt.Close Set rst = Nothing Set cnt = Nothing On Error GoTo 0 End Sub

В настоящее время проблема, когда я отладки кода, появляется сообщение об ошибке компиляции: «Метод или данные члена не найдено "по функции" cnt.Open sConnect ".

Если это возможно, любая помощь будет принята с благодарностью.

Примечание: Я использую Office 2010.

stackoverrun.com

Экспорт таблицы доступа в файл dBase из Excel VBA?

У меня есть приложение Excel, в котором пользователи добавляют/редактируют/и т. Д. данные. Когда они готовы, они экспортируют эти данные, конечный результат должен быть файлом dBase. Поскольку Excel 2007 больше не имеет функции Save As dBase, я создал следующий код для экспорта моих данных в таблицу доступа.

Есть ли способ в моем VBA в Excel, чтобы перейти и передать таблицу доступа в файл dBase? Или мне нужно сделать этот шаг от самого доступа?

Я пытаюсь сохранить все в Excel, чтобы сделать возможной модификацию в будущем максимально простой. Любая помощь приветствуется. Если это возможно, было бы даже неплохо сделать от Access, если процесс можно автоматизировать в синхронизации с моим процессом экспорта.

Sub Export() Dim dbConnection As ADODB.Connection Dim dbFileName As String Dim dbRecordset As ADODB.Recordset Dim xRow As Long, xColumn As Long Dim LastRow As Long 'Go to the worksheet containing the records you want to transfer. Worksheets("FeedSamples").Activate 'Determine the last row of data based on column A. LastRow = Cells(Rows.Count, 1).End(xlUp).row 'Create the connection to the database. Set dbConnection = New ADODB.Connection 'Define the database file name dbFileName = "\\agfiles\public\ITSD_ApDev\James Scurlock\Personal Project Notes\FeedSampleResults.accdb" 'Define the Provider and open the connection. With dbConnection .Provider = "Microsoft.ACE.OLEDB.12.0;Data Source=" & dbFileName & _ ";Persist Security Info=False;" .Open dbFileName End With 'Create the recordset Set dbRecordset = New ADODB.Recordset dbRecordset.CursorLocation = adUseServer dbRecordset.Open Source:="ImportedData", _ ActiveConnection:=dbConnection, _ CursorType:=adOpenDynamic, _ LockType:=adLockOptimistic, _ Options:=adCmdTable 'Loop thru rows & columns to load records from Excel to Access. 'Assume row 1 is the header row, so start at row 2. 'ACCESS COLUMNS MUST BE NAMED EXACTLY THE SAME AS EXCEL COLUMNS For xRow = 2 To LastRow dbRecordset.AddNew 'Assume this is an 8-column (field) table starting with column A. For xColumn = 1 To 69 dbRecordset(Cells(1, xColumn).value) = Cells(xRow, xColumn).value Next xColumn dbRecordset.Update Next xRow 'Close the connections. dbRecordset.Close dbConnection.Close 'Release Object variable memory. Set dbRecordset = Nothing Set dbConnection = Nothing 'Optional: 'Clear the range of data (the records) you just transferred. 'Range("A2:H" & LastRow).ClearContents MsgBox "Test" Dim access As access.Application Set access = "\\agfiles\public\ITSD_ApDev\James Scurlock\Personal Project Notes\FeedSampleResults.accdb" access.DoCmd.OpenTable "ImportedData" access.DoCmd.TransferDatabase acExport, "dBASE IV", "C:\", acTable, "ImportedData", "TEST.DBF" DoCmd.Close acTable, "ImportedData" 'CREATE dBASE FILE! End Sub

vba excel-vba export access-vba dbase1,606

stackoverrun.com

Экспорт данных из Excel в Access с помощью VBA

У меня есть таблица в файле Excel с некоторыми данными, и я хочу экспортировать эти данные в свою базу данных по Access (в конкретной таблице в моей базе данных под названием «Качество воды») с помощью VBA кода, чтобы не открывать мою базу данных каждый раз, когда я хочу представить на ней больше данных.

На данный момент у меня есть этот код, но он не работает ...

Sub Button14_Click() ' Macro purpose: To add record to Access database using ADO and SQL ' NOTE: Reference to Microsoft ActiveX Data Objects Libary required ' Exports data from the active worksheet to a table in an Access database 'Dim cnt As New ADODB.Connection 'Dim rst As New ADODB.Recordset Dim cnt As DAO.Database Dim rst As Recordset Dim dbPath As String Dim tblName As String Dim rngColHeads As Range Dim rngTblRcds As Range Dim colHead As String Dim rcdDetail As String Dim ch As Integer Dim cl As Integer Dim notNull As Boolean Dim sConnect As String 'Set the string to the path of your database as defined on the worksheet dbPath = "C:\Documents and Settings\Administrador\Mis documentos\MonEAU\modelEAU Database V.2.accdb" tblName = "Water Quality" Set rngColHeads = ActiveSheet.Range("tblHeadings") Set rngTblRcds = ActiveSheet.Range("tblRecords") 'Set the database connection string here sConnect = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" & dbPath & "';" 'For use with *.accdb files ' sConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";" 'For use with *.mdb files 'Concatenate a string with the names of the column headings colHead = " (" For ch = 1 To rngColHeads.Count colHead = colHead & rngColHeads.Columns(ch).Value Select Case ch Case Is = rngColHeads.Count colHead = colHead & ")" Case Else colHead = colHead & "," End Select Next ch 'Open connection to the database cnt.Open sConnect 'Begin transaction processing On Error GoTo EndUpdate cnt.BeginTrans 'Insert records into database from worksheet table For cl = 1 To rngTblRcds.Rows.Count 'Assume record is completely Null, and open record string for concatenation notNull = False rcdDetail = "('" 'Evaluate field in the record For ch = 1 To rngColHeads.Count Select Case rngTblRcds.Rows(cl).Columns(ch).Value 'if empty, append value of null to string Case Is = Empty Select Case ch Case Is = rngColHeads.Count rcdDetail = Left(rcdDetail, Len(rcdDetail) - 1) & "NULL)" Case Else rcdDetail = Left(rcdDetail, Len(rcdDetail) - 1) & "NULL,'" End Select 'if not empty, set notNull to true, and append value to string Case Else notNull = True Select Case ch Case Is = rngColHeads.Count rcdDetail = rcdDetail & rngTblRcds.Rows(cl).Columns(ch).Value & "')" Case Else rcdDetail = rcdDetail & rngTblRcds.Rows(cl).Columns(ch).Value & "','" End Select End Select Next ch 'If record consists of only Null values, do not insert it to table, otherwise 'insert the record Select Case notNull Case Is = True rst.Open "INSERT INTO " & tblName & colHead & " VALUES " & rcdDetail, cnt Case Is = False 'do not insert record End Select Next cl EndUpdate: 'Check if error was encounted If Err.Number <> 0 Then 'Error encountered. Rollback transaction and inform user On Error Resume Next cnt.RollbackTrans MsgBox "There was an error. Update was not succesful!", vbCritical, "Error!" Else On Error Resume Next cnt.CommitTrans End If 'Close the ADO objects cnt.Close Set rst = Nothing Set cnt = Nothing On Error GoTo 0 End Sub

В настоящее время проблема, когда я отладки кода, появляется сообщение об ошибке компиляции: «Метод или данные члена не найдено "по функции" cnt.Open sConnect ".

Если это возможно, любая помощь будет принята с благодарностью.

Примечание: Я использую Office 2010.

stackoverrun.com