Домашняя страница Undo Do Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Импорт данных в Access - Мир MS Excel

Старая форма входа
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Модератор форума: _Boroda_, китин  
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Импорт данных в Access (Макросы/Sub)
Импорт данных в Access
rtv206 Дата: Воскресенье, 19.05.2019, 21:34 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Доброго времени суток!
Уважаемые форумчане прошу помощи в решении задачи:
Необходимо данные с листа "Now" перенести в файл Access.
Данные каждый изменяются. Размер таблицы может изменятся.
К сообщению приложен файл: 8538457.xls (37.5 Kb)
 
Ответить
СообщениеДоброго времени суток!
Уважаемые форумчане прошу помощи в решении задачи:
Необходимо данные с листа "Now" перенести в файл Access.
Данные каждый изменяются. Размер таблицы может изменятся.

Автор - rtv206
Дата добавления - 19.05.2019 в 21:34
_Boroda_ Дата: Понедельник, 20.05.2019, 10:28 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Не совсем понятен вопрос - данные меняются, а в Аксе они должны тоже меняться или добавляться к уже существующим?
Попробуйте просто в Аксе создать связанную таблицу (Внешние данные - Excel) со ссылкой на файл Excel


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
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
Дата добавления - 21.05.2019 в 03:29
boa Дата: Вторник, 21.05.2019, 10:01 | Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 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
Дата добавления - 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 defined

Автор - rtv206
Дата добавления - 29.05.2019 в 14:36
boa Дата: Среда, 29.05.2019, 16:19 | Сообщение № 7
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 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
Дата добавления - 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
Дата добавления - 30.05.2019 в 21:32
RAN Дата: Четверг, 30.05.2019, 21:39 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
boa, проблема решена!

Теперь выдает ошибку

hands lol


Быть или не быть, вот в чем загвоздка!
 
Ответить
Сообщение
boa, проблема решена!

Теперь выдает ошибку

hands lol

Автор - RAN
Дата добавления - 30.05.2019 в 21:39
boa Дата: Четверг, 30.05.2019, 23:21 | Сообщение № 10
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Теперь выдает ошибку на этой строчке:

что бы импортировать в Access, нужно понимать структуру таблицы Access.

так, на вскидку, ваша таблица называется "table"?

Сделайте архив из пары Access и Excel файлов и приложите к сообщению, т.к. у вас где-то
Несоответствие типов данных

а мне от сюда не видно :D


 
Ответить
Сообщение
Теперь выдает ошибку на этой строчке:

что бы импортировать в Access, нужно понимать структуру таблицы Access.

так, на вскидку, ваша таблица называется "table"?

Сделайте архив из пары Access и Excel файлов и приложите к сообщению, т.к. у вас где-то
Несоответствие типов данных

а мне от сюда не видно :D

Автор - boa
Дата добавления - 30.05.2019 в 23:21
rtv206 Дата: Суббота, 01.06.2019, 20:37 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вот файлы
К сообщению приложен файл: _ZIP-WinRAR.zip (50.9 Kb)
 
Ответить
СообщениеВот файлы

Автор - rtv206
Дата добавления - 01.06.2019 в 20:37
boa Дата: Суббота, 01.06.2019, 23:40 | Сообщение № 12
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
rtv206,
Пробуйте
Код поправил

и таблицу в Access тоже
К сообщению приложен файл: _ZIP-WinRAR2.zip (35.5 Kb)


 
Ответить
Сообщениеrtv206,
Пробуйте
Код поправил

и таблицу в Access тоже

Автор - boa
Дата добавления - 01.06.2019 в 23:40
rtv206 Дата: Воскресенье, 02.06.2019, 15:02 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, Спасибо огромное! Пока все работает!
 
Ответить
Сообщение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
Дата добавления - 15.12.2019 в 16:05
boa Дата: Воскресенье, 15.12.2019, 19:18 | Сообщение № 15
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Почитайте про цикл For ... Next и установите нужные параметры для iCol и iRow


 
Ответить
СообщениеПочитайте про цикл 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]

Поменял эти строки)


Сообщение отредактировал 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,(к примеру поле Табельный номер: с короткий текст на числовое) что необходимо поменять в макросе?


Сообщение отредактировал rtv206 - Четверг, 19.12.2019, 12:49
 
Ответить
Сообщениеboa, Подскажите, пожалуйста, если поменять тип данных в файле Access,(к примеру поле Табельный номер: с короткий текст на числовое) что необходимо поменять в макросе?

Автор - rtv206
Дата добавления - 18.12.2019 в 20:37
boa Дата: Четверг, 19.12.2019, 14:09 | Сообщение № 18
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Здравствуйте, rtv206,
Надо менять логику в строке формирования sValues
Если вы передаете цифровое значение, то оно просто цифрой передается, а если тестовое значение, то его надо обрамить одинарными кавычками.


 
Ответить
СообщениеЗдравствуйте, rtv206,
Надо менять логику в строке формирования sValues
Если вы передаете цифровое значение, то оно просто цифрой передается, а если тестовое значение, то его надо обрамить одинарными кавычками.

Автор - boa
Дата добавления - 19.12.2019 в 14:09
rtv206 Дата: Суббота, 21.12.2019, 22:30 | Сообщение № 19
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, спасибо за подсказку, буду пробовать
 
Ответить
Сообщение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
Дата добавления - 24.12.2019 в 20:38
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Импорт данных в Access (Макросы/Sub)
  • Страница 1 из 3
  • 1
  • 2
  • 3
  • »
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!