Экспорт данных из 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Если это возможно, любая помощь будет принята с благодарностью.
Примечание: Я использую Office 2010.
stackoverrun.com
Экспорт таблицы доступа в файл dBase из Excel VBA?
У меня есть приложение Excel, в котором пользователи добавляют/редактируют/и т. Д. данные. Когда они готовы, они экспортируют эти данные, конечный результат должен быть файлом dBase. Поскольку Excel 2007 больше не имеет функции Save As dBase, я создал следующий код для экспорта моих данных в таблицу доступа.
Есть ли способ в моем VBA в Excel, чтобы перейти и передать таблицу доступа в файл dBase? Или мне нужно сделать этот шаг от самого доступа?
Я пытаюсь сохранить все в Excel, чтобы сделать возможной модификацию в будущем максимально простой. Любая помощь приветствуется. Если это возможно, было бы даже неплохо сделать от Access, если процесс можно автоматизировать в синхронизации с моим процессом экспорта.
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Если это возможно, любая помощь будет принята с благодарностью.
Примечание: Я использую Office 2010.
stackoverrun.com