|
|||||||
Экспорт из Excel в Access
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - Excel->Access
Запись: xintrea/mytetra_db_adgaver_new/master/base/15113547004p6gw686wr/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Вот нашёл кое-что в запаснике: =========== Вот текст достаточно универсальной функции для Access, которая загружает данные из таблицы Excel. Работает довольно медленно в силу поячеечного обращения к экселю. 'Процедура ЗагрузкаИзExcel 'Загрузка данных с листа Excel в соответствующую по структуре таблицу с указанием 'номера первой строки, содержащей данные. Загрузка ведется до конца диапозона 'параметры: 'Таблица - имя таблицы в которую будут загружаться данные 'Файл - полное имя файла (с путем) рабочей книги Excel 'Лист - имя листа Excel 'ПервСтрока - номер первой строки, содержащей данные Function ЗагрузкаИзExcel(Таблица As String, Файл As String, Лист, ПервСтрока As Long) Dim app, wb, rst As New ADODB.Recordset, i As Long, j As Integer On Error GoTo ErrorHandler Set app = CreateObject("Excel.Application") Set wb = app.Workbooks.Open(Файл) rst.Open Таблица, CurrentProject.Connection, adOpenStatic, adLockOptimistic With wb.Worksheets(Лист) For i = ПервСтрока To .UsedRange.Rows.Count rst.AddNew For j = 1 To rst.Fields.Count 'Форматы таблиц должны совпадать! rst.Fields(j - 1) = .Cells(i, j) Next j Next i End With rst.Update rst.Close wb.Close GoTo Done ErrorHandler: MsgBox "Ошибка при загрузке. Ряд " & i & " Столбец " & j Done: Set rst = Nothing Set wb = Nothing Set app = Nothing End Function
mastadon 17.04.2007, 16:05 можно с помощью функции если определить значения, а потом копировать и вставить (как значения) на старое место
AlexeyVik 18.04.2007, 13:09 mikle, задача была с точностью наоборот, из Excel 'я передать в Access.
Вот основная часть кода "Private Sub Worksheet_Change(ByVal Target As Range)" ................. Dim Baza As Database, RS As Recordset, rs1 As Recordset Set Baza = OpenDatabase(ThisWorkbook.Path & "\имя.mdb", False) ' можно указать в кавычках полный путь к базе' Set RS = Baza.OpenRecordset("Имя_таблицы", dbOpenDynaset) Kod = Sheets("имя_листа_книги").Range("ячейка_содержащая _код") QryStr = "SELECT * FROM Имя_таблицы WHERE Имя_таблицы.поле =Kod" Set QRY1 = Baza.CreateQueryDef("") QRY1.Sql = QryStr Set rs1 = QRY1.OpenRecordset(dbOpenDynaset)
Здесь добавить обработку ошибки возникающую при отсутствии такого кода. Если такой код есть rs1.Edit rs1.Fields("поле") = Target rs1.Update если -нет RS.AddNew RS.Fields("имя_поля_таблицы") = Sheets("имя_листа_книги").Range("ячейка_содержащая_код") RS.Fields("имя_поля_таблицы") = Sheets("имя_листа_книги").Range("ячейка_содержащая_значение") RS.Update конец если Baza.Close Set RS = Nothing Set rs1 = Nothing ...................
mikle 18.04.2007, 23:55 задача была с точностью наоборот, из Excel 'я передать в Access.Что от чего наоборот? ^_^
makody 20.04.2007, 15:06 Делаем в проекте ссылку на MS ADO 2.5. после чего можно использовать следующий код: Private Sub Worksheet_Change(ByVal Target As Range) Dim cn As ADODB.Connection Dim RS As ADODB.Recordset Dim sPath As String
sPath = "C:\test.mdb"
Set cn = New ADODB.Connection cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & sPath & ";Persist Security Info=False" cn.Open
RS = New ADODB.Recordset
RS.Open "SELECT * FROM Table1 Where NameCell=" & Trim(Target.Name), cn, adOpenStatic, adLockOptimistic
If RS.EOF Then RS.AddNew RS.Fields("NameCell").Value = Trim(Target.Name) End If RS.Fields("ValueCell").Value = Target.Value RS.Update
RS.Close cn.Close
End Sub
и еще одна ссылка http://www.delphikingdom.com/asp/answer.asp?IDAnswer=53209
есть заявлние в нем заполняются данные в ячейки (Фио,адрес,тел итд не) их нужно экспортировать в Access кнопкой на листе подскажите как сделать{/post}{/quote}
Вот вам пример Sub ADD_MDB() Dim cn As ADODB.Connection Dim cmd As ADODB.Command Dim DBFullName As String DBFullName = ThisWorkbook.Path & "\" & "base.mdb" Set cn = New ADODB.Connection cn.ConnectionString = "Provider= Microsoft.Jet.OLEDB.4.0;Data Source=" & DBFullName & "" cn.Open
Set cmd = New ADODB.Command With cmd .ActiveConnection = cn .CommandText = "INSERT INTO TBL ( TBLname , TBLcount , TBLvalue ) VALUES (11111, '2222222', '33333333');" 'TBL- Ваша таблица в скобках перечисляются Ваши поля в которые добавляются данные, во втрорых скобках (добавляемые значения) End With cmd.Execute cn.Close Set cn = Nothing End Sub
|
|||||||
Так же в этом разделе:
|
|||||||
|
|||||||
|