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


Экспорт из Excel в Access 2007 с помощью Excel VBA

Мне нужно экспортировать содержимое таблицы для добавления в таблицу базы данных доступа (оба 2007), и я пытаюсь запустить ее из модуля в электронной таблице Excel. В таблице есть первичный ключ, который является автономерным, и я попытался запустить модуль ниже с и без пустого первого столбца в электронной таблице, чтобы сопоставить столбцы таблицы с столбцами таблицы. Также конечным полем в таблице является флажок Y \ N, и я сделал последний столбец в значениях таблицы ИСТИНА и ЛОЖЬ. Но когда я запускаю модуль, я получаю msgbox «Finished», но таблица не обновляется. Как электронная таблица, так и база данных находятся в местоположении C :. Что я делаю не так?

Private Sub AddData() Dim strMyPath As String, strDBName As String, strDB As String, strSQL As String Dim i As Long, n As Long, lastRow As Long, lFieldCount As Long Dim adoRecSet As New ADODB.Recordset Dim connDB As New ADODB.Connection strDBName = "CMDB.mdb" strMyPath = ThisWorkbook.Path strDB = strMyPath & "\" & strDBName "Microsoft.ACE.OLEDB.12.0". The ACE Provider can be used for both the Access .mdb & .accdb files. connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(18) Set adoRecSet = New ADODB.Recordset strTable = "Asset_Table" adoRecSet.Open Source:=strTable, ActiveConnection:=connDB, CursorType:=adOpenStatic, LockType:=adLockOptimistic lFieldCount = adoRecSet.Fields.Count 'determine last data row in the worksheet: lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow adoRecSet.AddNew For n = 0 To lFieldCount - 1 adoRecSet.Fields(n).Value = ws.Cells(i, n + 1) Next n adoRecSet.Update Next i adoRecSet.Close connDB.Close Set adoRecSet = Nothing Set connDB = Nothing MsgBox "Finished" End Sub

EDIT: советы Эванса и ChipsLetten ниже помогли и я решить это. Я изменил подсчет количества строк и добавил в If, чтобы иметь дело с автоматическим номером, поскольку Чипы предложили следующее.

Dim b As Long b = ws.UsedRange.Rows.Count For i = 2 To b - 1 adoRecSet.AddNew For n = 0 To lFieldCount - 1 If Not adoRecSet.Fields(n).Properties("ISAUTOINCREMENT") Then adoRecSet.Fields(n).Value = ws.Cells(i, n + 1).Value End If Next n adoRecSet.Update Next i

vba ms-access-2007 excel-2007113

stackoverrun.com

vba - Экспорт определенных полей в таблице, для каждой строки, из Excel в конкретную таблицу Access VBA

Хорошо, поэтому я никогда не использую Excel для VBA, и я нахожу его очень ограниченным, громоздким и запутанным. Несмотря на это, я по существу пытаюсь получить набор из 5 полей в строке, в которых есть "комментарии". Затем это цикл, найти эти строки, вытащить их, а затем добавить их в определенную таблицу Access. Я посмотрел совсем немного и не нашел для этого последовательных или применимых решений, поэтому я приношу свои извинения, если это неполное или неактивное. Как я уже сказал, я не знаком с Excel VBA.

Странно, я всегда получаю ошибки объявления объекта. Я также подтвердил свои ссылки.

Моя ошибка: "Ошибка времени выполнения" 424: требуется объект:

Вот что у меня есть:

Sub ExportNewNotes() ' exports data from the active worksheet to a table in an Access database Dim r As Long Dim dbs As Database Dim iUpdated As Integer Set dbs = OpenDatabase("J:\CUS Supply Chain\All Division Reporting\Field Retrievals\Field Retrieval - John Copy.accdb") iUpdated = 0 r = 6 ' the start row in the worksheet Do While Len(Range("A" & r).Formula) > 0 ' repeat until first empty cell in column A If Range("AE" & r).Value Is Not Null Then dbs.Execute "INSERT INTO tNotes " _ & "(Retrieval_ID,Location,Batch,Note_Date,Note)" _ & "SELECT .Fields('Retrieval Nbr') = Range('A' & r).Value," _ & ".Fields('Location Number') = Range('I' & r).Value," _ & ".Fields('Lot/Serial Number') = Range('N' & r).Value," _ & "Date()," _ & ".Fields('New Comments') = Range('AH' & r).Value," iUpdated = iUpdated + 1 End If r = r + 1 ' next row Loop MsgBox CStr(iUpdated) & " record(s) added to the Notes Table.", vbOKOnly, "Upload Completed" End Sub

Если бы кто-нибудь знал, это было бы очень признательно!

источник поделиться

qaru.site

vba - Экспорт из Excel в Access 2007 с помощью Excel VBA

Мне нужно экспортировать содержимое таблицы для добавления в таблицу базы данных доступа (оба 2007), и я пытаюсь запустить ее из модуля в электронной таблице Excel. В таблице есть первичный ключ, который является автономерным, и я попытался запустить модуль ниже с и без пустого первого столбца в электронной таблице, чтобы сопоставить столбцы таблицы с столбцами таблицы. Также конечным полем в таблице является флажок Y\N, и я сделал последний столбец в значениях таблицы ИСТИНА и ЛОЖЬ. Но когда я запускаю модуль, я получаю msgbox "Finished", но таблица не обновляется. Как электронная таблица, так и база данных находятся в местоположении C :. Что я делаю не так?

Private Sub AddData() Dim strMyPath As String, strDBName As String, strDB As String, strSQL As String Dim i As Long, n As Long, lastRow As Long, lFieldCount As Long Dim adoRecSet As New ADODB.Recordset Dim connDB As New ADODB.Connection strDBName = "CMDB.mdb" strMyPath = ThisWorkbook.Path strDB = strMyPath & "\" & strDBName "Microsoft.ACE.OLEDB.12.0". The ACE Provider can be used for both the Access .mdb & .accdb files. connDB.Open ConnectionString:="Provider = Microsoft.ACE.OLEDB.12.0; data source=" & strDB Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(18) Set adoRecSet = New ADODB.Recordset strTable = "Asset_Table" adoRecSet.Open Source:=strTable, ActiveConnection:=connDB, CursorType:=adOpenStatic, LockType:=adLockOptimistic lFieldCount = adoRecSet.Fields.Count 'determine last data row in the worksheet: lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lastRow adoRecSet.AddNew For n = 0 To lFieldCount - 1 adoRecSet.Fields(n).Value = ws.Cells(i, n + 1) Next n adoRecSet.Update Next i adoRecSet.Close connDB.Close Set adoRecSet = Nothing Set connDB = Nothing MsgBox "Finished" End Sub

EDIT: советы Эванса и ЧипсЛеттен ниже помогли, и я решил это. Я изменил подсчет количества строк и добавил в If, чтобы иметь дело с автоматическим номером, поскольку Чипы предложили следующее.

Dim b As Long b = ws.UsedRange.Rows.Count For i = 2 To b - 1 adoRecSet.AddNew For n = 0 To lFieldCount - 1 If Not adoRecSet.Fields(n).Properties("ISAUTOINCREMENT") Then adoRecSet.Fields(n).Value = ws.Cells(i, n + 1).Value End If Next n adoRecSet.Update Next i задан AJF 24 июля '15 в 19:11 источник поделиться

qaru.site

vba - Экспорт данных в Access из Excel VBA

Я новичок в доступе и стараюсь понять, как связать форматирование таблицы доступа/столбца/строки, чтобы лучше экспортировать в VBA.

Я создал таблицу доступа с именем Data и три столбца Food, Drinks, Color.

Я хотел бы экспортировать этот диапазон ячеек в Access из моей таблицы Excel:

Foodrng = Workbooks(xlFile).Sheets("ToBeExported").Range("D6") Drinksrng = Workbooks(xlFile).Sheets("ToBeExported").Range("E6") Colorrng= Workbooks(xlFile).Sheets("ToBeExported").Range("B12:B21")

Все в Интернете говорит, что я должен использовать это из-за моей версии:

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;"

Я хотел бы использовать форматирование INSERT TO для записи в мою базу данных, потому что я буду немного расширять столбцы базы данных, и я считаю, что это самый простой способ отслеживать, что происходит.

strSql = "INSERT INTO Data (Food, Drinks, Color) VALUES (Foodrng, Drinksrng,Colorrng)"

Я всегда получаю синтаксическую ошибку при выполнении:

Set rs = cn.Execute(strSql)

Каков правильный способ экспорта в базу данных Access с использованием вышеуказанного метода? Любая/вся информация будет очень полезной, поскольку я совершенно новый для доступа

Мой полный код:

Foodrng = Workbooks(xlFile).Sheets("ToBeExported").Range("D6") Drinksrng = Workbooks(xlFile).Sheets("ToBeExported").Range("E6") Colorrng= Workbooks(xlFile).Sheets("ToBeExported").Range("B12:B21") Set cn = CreateObject("ADODB.Connection") strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source= C:\Users\User1\MyDBase.accdb" cn.Open strConnection strSql = "INSERT INTO Data (Food, Drinks, Color) VALUES (Foodrng, Drinksrng,Colorrng)" Set rs = cn.Execute(strSql) 'MsgBox rs.Fields(0) & " rows in MyTable" rs.Close Set rs = Nothing cn.Close Set cn = Nothing

qaru.site

Экспорт данных из Excel в Access-VBA MS Excel онлайн

Я пытаюсь загрузить набор данных из excel в базу данных доступа, используя следующий код.

Тем не менее я продолжаю получать ошибку времени выполнения 3078- Определенное приложение или объектная ошибка. Я использую dao для этого и добавил ссылки:

Библиотека Microsoft Office 16.0 для доступа к базе данных, библиотека доступа Microsoft 16.0.

Я не могу добавить библиотеку объектов Microsoft DAO 3.6 (имя конфликтует с существующим модулем, проектом или объектной библиотекой

вот код:

Sub access_upload() Dim strMyPath As String, strDBName As String, strDB As String Dim i As Long, n As Long, lLastRow As Long, lFieldCount As Long Dim daoDB As DAO.Database Dim recSet As DAO.Recordset strDBName = "Database8.accdb" 'presume to be in the same location as the host workbook: strMyPath = ThisWorkbook.Path strDB = strMyPath & "\" & strDBName Set daoDB = DBEngine.Workspaces(0).OpenDatabase(strDB) Dim ws As Worksheet Set ws = ActiveWorkbook.Sheets("Sheet2") Set recSet = daoDB.OpenRecordset("Database8") lFieldCount = recSet.Fields.Count lLastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row For i = 2 To lLastRow recSet.AddNew For n = 0 To lFieldCount - 1 recSet.Fields(n).Value = ws.Cells(i, n + 1) Next n recSet.Update Next i recSet.Close daoDB.Close Set daoDB = Nothing Set recSet = Nothing End Sub

Пожалуйста, дайте мне знать, чего я здесь не вижу. Благодаря!

Solutions Collecting From Web of "Экспорт данных из Excel в Access-VBA"

От Excel до Access. , ,

Dim strPathFile As String, strFile As String, strPath As String Dim strTable As String Dim blnHasFieldNames As Boolean ' Change this next line to True if the first row in EXCEL worksheet ' has field names blnHasFieldNames = False ' Replace C:\Documents\ with the real path to the folder that ' contains the EXCEL files strPath = "C:\Documents\" ' Replace tablename with the real name of the table into which ' the data are to be imported strTable = "tablename" strFile = Dir(strPath & "*.xls") Do While Len(strFile) > 0 strPathFile = strPath & strFile DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, _ strTable, strPathFile, blnHasFieldNames ' Uncomment out the next code step if you want to delete the ' EXCEL file after it's been imported ' Kill strPathFile strFile = Dir() Loop

также, если имя пути и excel фиксировано; вы можете выполнить импорт вручную, используя внешние элементы ленты, в конце которой будет предложено сохранить эти шаги как определенный импорт.

вы можете повторно запустить импорт только с помощью docmd для запуска сохраненного импорта

excel.bilee.com

vba - Экспорт из Excel в Access 2007 с помощью Excel VBA

Мне нужно экспортировать содержимое листа для добавления в таблицу базы данных доступа (оба 2007), и я пытаюсь запустить это из модуля в электронной таблице Excel. Таблица имеет первичный ключ, который является AutoNumber и я попытался запустить модуль ниже с и без пустого первого столбца в таблице, чтобы соответствовать столбцам таблиц со столбцами таблицы. Кроме того, последнее поле в таблице флажок Y \ N, и я сделал последнюю колонку в таблице Истинные и ложные значения. Но когда я бегу модуль я получаю «Закончено» MsgBox но таблица не обновляется. И таблицы и базы данных находятся в расположении C :. Что я делаю не так?

Private Sub AddData() Dim strMyPath As String, strDBName As String, strDB As String, strSQL As String Dim i As Long, n As Long, lastRow As Long, lFieldCount As Long Dim adoRecSet As New ADODB.Recordset Dim connDB As New ADODB.Connection strDBName = CMDB.mdb strMyPath = ThisWorkbook.Path strDB = strMyPath & \ & strDBName Microsoft.ACE.OLEDB.12.0. The ACE Provider can be used for both the Access .mdb & .accdb files. connDB.Open ConnectionString:=Provider = Microsoft.ACE.OLEDB.12.0; data source= & strDB Dim ws As Worksheet Set ws = ThisWorkbook.Sheets(18) Set adoRecSet = New ADODB.Recordset strTable = Asset_Table adoRecSet.Open Source:=strTable, ActiveConnection:=connDB, CursorType:=adOpenStatic, LockType:=adLockOptimistic lFieldCount = adoRecSet.Fields.Count 'determine last data row in the worksheet: lastRow = ws.Cells(Rows.Count, A).End(xlUp).Row For i = 2 To lastRow adoRecSet.AddNew For n = 0 To lFieldCount - 1 adoRecSet.Fields(n).Value = ws.Cells(i, n + 1) Next n adoRecSet.Update Next i adoRecSet.Close connDB.Close Set adoRecSet = Nothing Set connDB = Nothing MsgBox Finished End Sub

EDIT: советы Эванса и ChipsLetten ниже помогли и я решить это. Я изменил расчет количества строк и добавляю в If дела с автоматическим числом, как Chips предложил быть следующими.

Dim b As Long b = ws.UsedRange.Rows.Count For i = 2 To b - 1 adoRecSet.AddNew For n = 0 To lFieldCount - 1 If Not adoRecSet.Fields(n).Properties(ISAUTOINCREMENT) Then adoRecSet.Fields(n).Value = ws.Cells(i, n + 1).Value End If Next n adoRecSet.Update Next i

coredump.su

vba - Экспорт таблицы доступа в файл 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 источник поделиться

qaru.site