Импорт данных в Access
rtv206
Дата: Воскресенье, 19.05.2019, 21:34 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Доброго времени суток! Уважаемые форумчане прошу помощи в решении задачи: Необходимо данные с листа "Now" перенести в файл Access. Данные каждый изменяются. Размер таблицы может изменятся.
Доброго времени суток! Уважаемые форумчане прошу помощи в решении задачи: Необходимо данные с листа "Now" перенести в файл Access. Данные каждый изменяются. Размер таблицы может изменятся. rtv206
Ответить
Сообщение Доброго времени суток! Уважаемые форумчане прошу помощи в решении задачи: Необходимо данные с листа "Now" перенести в файл Access. Данные каждый изменяются. Размер таблицы может изменятся. Автор - rtv206 Дата добавления - 19.05.2019 в 21:34
_Boroda_
Дата: Понедельник, 20.05.2019, 10:28 |
Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация:
6503
±
Замечаний:
±
2003; 2007; 2010; 2013 RUS
Не совсем понятен вопрос - данные меняются, а в Аксе они должны тоже меняться или добавляться к уже существующим? Попробуйте просто в Аксе создать связанную таблицу (Внешние данные - Excel) со ссылкой на файл Excel
Не совсем понятен вопрос - данные меняются, а в Аксе они должны тоже меняться или добавляться к уже существующим? Попробуйте просто в Аксе создать связанную таблицу (Внешние данные - Excel) со ссылкой на файл Excel _Boroda_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: Boroda_Excel@mail.ru Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
Ответить
Сообщение Не совсем понятен вопрос - данные меняются, а в Аксе они должны тоже меняться или добавляться к уже существующим? Попробуйте просто в Аксе создать связанную таблицу (Внешние данные - Excel) со ссылкой на файл Excel Автор - _Boroda_ Дата добавления - 20.05.2019 в 10:28
rtv206
Дата: Вторник, 21.05.2019, 03:29 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
В Excel сначала таблица заполняется, потом данные переносятся в Access и после успешного переноса данные из таблицы в Excel удаляются, но в Access остаются. Потом даннные в таблицу Excel снова заполняются, и так по кругу По сути это накопительная БД
В Excel сначала таблица заполняется, потом данные переносятся в Access и после успешного переноса данные из таблицы в Excel удаляются, но в Access остаются. Потом даннные в таблицу Excel снова заполняются, и так по кругу По сути это накопительная БД rtv206
Ответить
Сообщение В Excel сначала таблица заполняется, потом данные переносятся в Access и после успешного переноса данные из таблицы в Excel удаляются, но в Access остаются. Потом даннные в таблицу Excel снова заполняются, и так по кругу По сути это накопительная БД Автор - rtv206 Дата добавления - 21.05.2019 в 03:29
boa
Дата: Вторник, 21.05.2019, 10:01 |
Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
rtv206, что бы импортировать в Access, нужно понимать структуру таблицы Access. Если таблица в Access идентична таблице в Excel, то можно так [vba]Код
Private Sub Insert2Access() Dim CON As New ADODB.Connection Dim iRow&, iCol&, LastRow&, LastCol& Dim sFields$, sValues$ CON.Open IIf(Val(Application.Version) < 12, "Provider='Microsoft.Jet.OLEDB.4.0'", "Provider='Microsoft.ACE.OLEDB.12.0'") & _ "; Data Source=" & "Полный путь к файлу Access" & ";Mode=Share Deny None; Jet OLEDB:Database;" With Worksheets("Now") LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For iCol = 1 To LastCol ' создаем строку с названиями полей sFields = IIf(iCol > 1, sFields & ", ", "") & "[" & .Cells(1, iCol).Value & "]" Next iCol For iRow = 2 To LastRow ' создаем строку значений For iCol = 1 To LastCol sValues = IIf(iCol > 1, sValues & ", ", "") & "'" & .Cells(iRow, iCol).Value & "'" Next iCol 'Заполняем таблицу данными CON.Execute ("INSERT INTO [" & "Имя таблицы в которую вносите данные" & "] (" & sFields & ") VALUES (" & sValues & ");") Next iRow End With CON.Close End Sub
[/vba]
rtv206, что бы импортировать в Access, нужно понимать структуру таблицы Access. Если таблица в Access идентична таблице в Excel, то можно так [vba]Код
Private Sub Insert2Access() Dim CON As New ADODB.Connection Dim iRow&, iCol&, LastRow&, LastCol& Dim sFields$, sValues$ CON.Open IIf(Val(Application.Version) < 12, "Provider='Microsoft.Jet.OLEDB.4.0'", "Provider='Microsoft.ACE.OLEDB.12.0'") & _ "; Data Source=" & "Полный путь к файлу Access" & ";Mode=Share Deny None; Jet OLEDB:Database;" With Worksheets("Now") LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For iCol = 1 To LastCol ' создаем строку с названиями полей sFields = IIf(iCol > 1, sFields & ", ", "") & "[" & .Cells(1, iCol).Value & "]" Next iCol For iRow = 2 To LastRow ' создаем строку значений For iCol = 1 To LastCol sValues = IIf(iCol > 1, sValues & ", ", "") & "'" & .Cells(iRow, iCol).Value & "'" Next iCol 'Заполняем таблицу данными CON.Execute ("INSERT INTO [" & "Имя таблицы в которую вносите данные" & "] (" & sFields & ") VALUES (" & sValues & ");") Next iRow End With CON.Close End Sub
[/vba] boa
Ответить
Сообщение rtv206, что бы импортировать в Access, нужно понимать структуру таблицы Access. Если таблица в Access идентична таблице в Excel, то можно так [vba]Код
Private Sub Insert2Access() Dim CON As New ADODB.Connection Dim iRow&, iCol&, LastRow&, LastCol& Dim sFields$, sValues$ CON.Open IIf(Val(Application.Version) < 12, "Provider='Microsoft.Jet.OLEDB.4.0'", "Provider='Microsoft.ACE.OLEDB.12.0'") & _ "; Data Source=" & "Полный путь к файлу Access" & ";Mode=Share Deny None; Jet OLEDB:Database;" With Worksheets("Now") LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For iCol = 1 To LastCol ' создаем строку с названиями полей sFields = IIf(iCol > 1, sFields & ", ", "") & "[" & .Cells(1, iCol).Value & "]" Next iCol For iRow = 2 To LastRow ' создаем строку значений For iCol = 1 To LastCol sValues = IIf(iCol > 1, sValues & ", ", "") & "'" & .Cells(iRow, iCol).Value & "'" Next iCol 'Заполняем таблицу данными CON.Execute ("INSERT INTO [" & "Имя таблицы в которую вносите данные" & "] (" & sFields & ") VALUES (" & sValues & ");") Next iRow End With CON.Close End Sub
[/vba] Автор - boa Дата добавления - 21.05.2019 в 10:01
rtv206
Дата: Пятница, 24.05.2019, 21:34 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , спасибо
Ответить
Сообщение boa , спасибоАвтор - rtv206 Дата добавления - 24.05.2019 в 21:34
rtv206
Дата: Среда, 29.05.2019, 14:36 |
Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , Вставил Ваш код в Модуль и выдает вот такую ошибку: [vba]Код
Dim CON As New ADODB.Connection
[/vba] Compile error: User defined type not defined
boa , Вставил Ваш код в Модуль и выдает вот такую ошибку: [vba]Код
Dim CON As New ADODB.Connection
[/vba] Compile error: User defined type not definedrtv206
Ответить
Сообщение boa , Вставил Ваш код в Модуль и выдает вот такую ошибку: [vba]Код
Dim CON As New ADODB.Connection
[/vba] Compile error: User defined type not definedАвтор - rtv206 Дата добавления - 29.05.2019 в 14:36
boa
Дата: Среда, 29.05.2019, 16:19 |
Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
rtv206, замените проблемную строку на [vba]Код
Dim CON As Object: Set CON = CreateObject("ADODB.Connection")
[/vba] или подключите в референсах "Microsoft ActiveX Data Objects x.x Library"
rtv206, замените проблемную строку на [vba]Код
Dim CON As Object: Set CON = CreateObject("ADODB.Connection")
[/vba] или подключите в референсах "Microsoft ActiveX Data Objects x.x Library" boa
Ответить
Сообщение rtv206, замените проблемную строку на [vba]Код
Dim CON As Object: Set CON = CreateObject("ADODB.Connection")
[/vba] или подключите в референсах "Microsoft ActiveX Data Objects x.x Library" Автор - boa Дата добавления - 29.05.2019 в 16:19
rtv206
Дата: Четверг, 30.05.2019, 21:32 |
Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , проблема решена! Теперь выдает ошибку на этой строчке: [vba]Код
CON.Execute ("INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");")
[/vba] run time error -2147217913 (80040e07) Несоответствие типов данных в выражении условия отбора
boa , проблема решена! Теперь выдает ошибку на этой строчке: [vba]Код
CON.Execute ("INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");")
[/vba] run time error -2147217913 (80040e07) Несоответствие типов данных в выражении условия отбораrtv206
Ответить
Сообщение boa , проблема решена! Теперь выдает ошибку на этой строчке: [vba]Код
CON.Execute ("INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");")
[/vba] run time error -2147217913 (80040e07) Несоответствие типов данных в выражении условия отбораАвтор - rtv206 Дата добавления - 30.05.2019 в 21:32
RAN
Дата: Четверг, 30.05.2019, 21:39 |
Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
boa, проблема решена! Теперь выдает ошибку
boa, проблема решена! Теперь выдает ошибку
RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение boa, проблема решена! Теперь выдает ошибку
Автор - RAN Дата добавления - 30.05.2019 в 21:39
boa
Дата: Четверг, 30.05.2019, 23:21 |
Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
Теперь выдает ошибку на этой строчке:
что бы импортировать в Access, нужно понимать структуру таблицы Access.
так, на вскидку, ваша таблица называется "table"? Сделайте архив из пары Access и Excel файлов и приложите к сообщению, т.к. у вас где-то Несоответствие типов данных
а мне от сюда не видно
Теперь выдает ошибку на этой строчке:
что бы импортировать в Access, нужно понимать структуру таблицы Access.
так, на вскидку, ваша таблица называется "table"? Сделайте архив из пары Access и Excel файлов и приложите к сообщению, т.к. у вас где-то Несоответствие типов данных
а мне от сюда не видно boa
Ответить
Сообщение Теперь выдает ошибку на этой строчке:
что бы импортировать в Access, нужно понимать структуру таблицы Access.
так, на вскидку, ваша таблица называется "table"? Сделайте архив из пары Access и Excel файлов и приложите к сообщению, т.к. у вас где-то Несоответствие типов данных
а мне от сюда не видно Автор - boa Дата добавления - 30.05.2019 в 23:21
rtv206
Дата: Суббота, 01.06.2019, 20:37 |
Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Вот файлы
Ответить
Сообщение Вот файлы Автор - rtv206 Дата добавления - 01.06.2019 в 20:37
boa
Дата: Суббота, 01.06.2019, 23:40 |
Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
rtv206 , Пробуйте Код поправил
[vba]
Код
Sub Insert2Access() Dim CON As Object: Set CON = CreateObject("ADODB.Connection") Dim iRow&, iCol&, LastRow&, LastCol& Dim sFields$, sValues$, sSQL$ CON.Open IIf(Val(Application.Version) < 12, "Provider='Microsoft.Jet.OLEDB.4.0'", "Provider='Microsoft.ACE.OLEDB.12.0'") & _ "; Data Source=" & ThisWorkbook.Path & "\Data.accdb" & ";Mode=Share Deny None; Jet OLEDB:Database;" With Worksheets("Now") LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For iCol = 1 To LastCol ' создаем строку с названиями полей sFields = IIf(iCol > 1, sFields & ", ", "") & "[" & .Cells(1, iCol).Value & "]" Next iCol For iRow = 2 To LastRow ' создаем строку значений For iCol = 1 To LastCol sValues = IIf(iCol > 1, sValues & ", ", "") & _ IIf(iCol > 3, "", "'") & _ IIf(.Cells(iRow, iCol).Value = 0, "Null", Replace(CStr(.Cells(iRow, iCol).Value), ",", ".")) & _ IIf(iCol > 3, "", "'") Next iCol sSQL = "INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");" 'Debug.Print sSQL 'Заполняем таблицу данными CON.Execute sSQL Next iRow End With CON.Close If Err = 0 Then MsgBox "Успешно перенесено " & LastRow - 1 & " записей." End Sub
[/vba]
и таблицу в Access тоже
rtv206 , Пробуйте Код поправил
[vba]
Код
Sub Insert2Access() Dim CON As Object: Set CON = CreateObject("ADODB.Connection") Dim iRow&, iCol&, LastRow&, LastCol& Dim sFields$, sValues$, sSQL$ CON.Open IIf(Val(Application.Version) < 12, "Provider='Microsoft.Jet.OLEDB.4.0'", "Provider='Microsoft.ACE.OLEDB.12.0'") & _ "; Data Source=" & ThisWorkbook.Path & "\Data.accdb" & ";Mode=Share Deny None; Jet OLEDB:Database;" With Worksheets("Now") LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For iCol = 1 To LastCol ' создаем строку с названиями полей sFields = IIf(iCol > 1, sFields & ", ", "") & "[" & .Cells(1, iCol).Value & "]" Next iCol For iRow = 2 To LastRow ' создаем строку значений For iCol = 1 To LastCol sValues = IIf(iCol > 1, sValues & ", ", "") & _ IIf(iCol > 3, "", "'") & _ IIf(.Cells(iRow, iCol).Value = 0, "Null", Replace(CStr(.Cells(iRow, iCol).Value), ",", ".")) & _ IIf(iCol > 3, "", "'") Next iCol sSQL = "INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");" 'Debug.Print sSQL 'Заполняем таблицу данными CON.Execute sSQL Next iRow End With CON.Close If Err = 0 Then MsgBox "Успешно перенесено " & LastRow - 1 & " записей." End Sub
[/vba]
и таблицу в Access тожеboa
Ответить
Сообщение rtv206 , Пробуйте Код поправил
[vba]
Код
Sub Insert2Access() Dim CON As Object: Set CON = CreateObject("ADODB.Connection") Dim iRow&, iCol&, LastRow&, LastCol& Dim sFields$, sValues$, sSQL$ CON.Open IIf(Val(Application.Version) < 12, "Provider='Microsoft.Jet.OLEDB.4.0'", "Provider='Microsoft.ACE.OLEDB.12.0'") & _ "; Data Source=" & ThisWorkbook.Path & "\Data.accdb" & ";Mode=Share Deny None; Jet OLEDB:Database;" With Worksheets("Now") LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For iCol = 1 To LastCol ' создаем строку с названиями полей sFields = IIf(iCol > 1, sFields & ", ", "") & "[" & .Cells(1, iCol).Value & "]" Next iCol For iRow = 2 To LastRow ' создаем строку значений For iCol = 1 To LastCol sValues = IIf(iCol > 1, sValues & ", ", "") & _ IIf(iCol > 3, "", "'") & _ IIf(.Cells(iRow, iCol).Value = 0, "Null", Replace(CStr(.Cells(iRow, iCol).Value), ",", ".")) & _ IIf(iCol > 3, "", "'") Next iCol sSQL = "INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");" 'Debug.Print sSQL 'Заполняем таблицу данными CON.Execute sSQL Next iRow End With CON.Close If Err = 0 Then MsgBox "Успешно перенесено " & LastRow - 1 & " записей." End Sub
[/vba]
и таблицу в Access тожеАвтор - boa Дата добавления - 01.06.2019 в 23:40
rtv206
Дата: Воскресенье, 02.06.2019, 15:02 |
Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , Спасибо огромное! Пока все работает!
boa , Спасибо огромное! Пока все работает!rtv206
Ответить
Сообщение boa , Спасибо огромное! Пока все работает!Автор - rtv206 Дата добавления - 02.06.2019 в 15:02
rtv206
Дата: Воскресенье, 15.12.2019, 16:05 |
Сообщение № 14
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , не подскажите, как организовать перенос данных с ячеек К1-AF1? другие ячейки трогать не нужно переносить)
boa , не подскажите, как организовать перенос данных с ячеек К1-AF1? другие ячейки трогать не нужно переносить)rtv206
Ответить
Сообщение boa , не подскажите, как организовать перенос данных с ячеек К1-AF1? другие ячейки трогать не нужно переносить)Автор - rtv206 Дата добавления - 15.12.2019 в 16:05
boa
Дата: Воскресенье, 15.12.2019, 19:18 |
Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
Почитайте про цикл For ... Next и установите нужные параметры для iCol и iRow
Почитайте про цикл For ... Next и установите нужные параметры для iCol и iRow boa
Ответить
Сообщение Почитайте про цикл For ... Next и установите нужные параметры для iCol и iRow Автор - boa Дата добавления - 15.12.2019 в 19:18
rtv206
Дата: Среда, 18.12.2019, 10:55 |
Сообщение № 16
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
[vba]Код
For iCol = 11 To LastCol ' создаем строку с названиями полей
[/vba] [vba]Код
For iCol = 11 To LastCol
[/vba] Поменял эти строки)
[vba]Код
For iCol = 11 To LastCol ' создаем строку с названиями полей
[/vba] [vba]Код
For iCol = 11 To LastCol
[/vba] Поменял эти строки) rtv206
Сообщение отредактировал rtv206 - Среда, 18.12.2019, 20:37
Ответить
Сообщение [vba]Код
For iCol = 11 To LastCol ' создаем строку с названиями полей
[/vba] [vba]Код
For iCol = 11 To LastCol
[/vba] Поменял эти строки) Автор - rtv206 Дата добавления - 18.12.2019 в 10:55
rtv206
Дата: Среда, 18.12.2019, 20:37 |
Сообщение № 17
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , Подскажите, пожалуйста, если поменять тип данных в файле Access,(к примеру поле Табельный номер: с короткий текст на числовое) что необходимо поменять в макросе?
boa , Подскажите, пожалуйста, если поменять тип данных в файле Access,(к примеру поле Табельный номер: с короткий текст на числовое) что необходимо поменять в макросе?rtv206
Сообщение отредактировал rtv206 - Четверг, 19.12.2019, 12:49
Ответить
Сообщение boa , Подскажите, пожалуйста, если поменять тип данных в файле Access,(к примеру поле Табельный номер: с короткий текст на числовое) что необходимо поменять в макросе?Автор - rtv206 Дата добавления - 18.12.2019 в 20:37
boa
Дата: Четверг, 19.12.2019, 14:09 |
Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 559
Репутация:
167
±
Замечаний:
0% ±
365
Здравствуйте, rtv206, Надо менять логику в строке формирования sValues Если вы передаете цифровое значение, то оно просто цифрой передается, а если тестовое значение, то его надо обрамить одинарными кавычками.
Здравствуйте, rtv206, Надо менять логику в строке формирования sValues Если вы передаете цифровое значение, то оно просто цифрой передается, а если тестовое значение, то его надо обрамить одинарными кавычками. boa
Ответить
Сообщение Здравствуйте, rtv206, Надо менять логику в строке формирования sValues Если вы передаете цифровое значение, то оно просто цифрой передается, а если тестовое значение, то его надо обрамить одинарными кавычками. Автор - boa Дата добавления - 19.12.2019 в 14:09
rtv206
Дата: Суббота, 21.12.2019, 22:30 |
Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
boa , спасибо за подсказку, буду пробовать
boa , спасибо за подсказку, буду пробоватьrtv206
Ответить
Сообщение boa , спасибо за подсказку, буду пробоватьАвтор - rtv206 Дата добавления - 21.12.2019 в 22:30
rtv206
Дата: Вторник, 24.12.2019, 20:38 |
Сообщение № 20
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация:
0
±
Замечаний:
0% ±
Excel 2013
Добрый вечер boa , как нужно поменять логику строке формирования sValues, если 3 первых столбика будут иметь формат числовой?
Добрый вечер boa , как нужно поменять логику строке формирования sValues, если 3 первых столбика будут иметь формат числовой? rtv206
Ответить
Сообщение Добрый вечер boa , как нужно поменять логику строке формирования sValues, если 3 первых столбика будут иметь формат числовой? Автор - rtv206 Дата добавления - 24.12.2019 в 20:38