Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 7

Подправить макрос для импорта из excel в access

01.05.2015, 23:23. Показов 2013. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.

Есть макрос, который воспроизводиться в excel файле и импортирует информацию в access:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub fromExcelToAccess()
 
    Dim dbe As Object 'DAO.DBEngine
    Dim db  As Object 'DAO.Database
    Dim rst As Object 'DAO.Recordset
    Dim i As Long
        
    Set dbe = CreateObject("DAO.DBEngine.120")
    Set db = dbe.OpenDatabase("C:\Test.accdb")
    Set rst = db.TableDefs("Таблица1").OpenRecordset
        
    For i = 1 To Range("A" & Cells.Rows.Count).End(xlUp).Row - 1
            rst.AddNew
            rst("Поле1").Value = Range("a" & 1 + i).Value
            rst("Поле2").Value = Range("b" & 1 + i).Value
            rst("Поле3").Value = Range("c" & 1 + i).Value
        rst.Update
    Next
        
End Sub
Необходимо подправить его таким образом, чтобы перед импортом данных из excel в access, он проверял есть ли в таблице access строки, в которых первая и вторая ячейка совпадают с импортируемыми и в этом случае, только обновлял значение третьей ячейки, не добавляя новую строку.

Буду очень признателен.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.05.2015, 23:23
Ответы с готовыми решениями:

Макрос для обработки и импорта данных из Access в Excel
Доброго времени суток, уважаемые форумчане! Столкнулась я вот с такой задачей: есть два файлика в Excel с бухгалтерскими данными. Мне их...

Макрос для импорта данных из excel в sql
Вообщем проблема заключается в том что нужен макрос для импорта определенных столбцов из ЭКСЕЛЬ файла в MS SQL 2008. Я только учусь, уже...

Кнопка для импорта из Excel в Access
Здравствуйте! Я не знаю VBA. Столкнулась с проблемой, мне нужна кнопка по нажатию на которую в уже существующую таблицу в Access будут...

4
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
01.05.2015, 23:41
Если данных немного, то и рекордсетом можно. При большом количестве данных, если строк больше нескольких сотен, сканирование листа екселя и поиск в таблице access будут очень долгими и нужно делать запросами

Поиск в рекодсете сделан в предположении, что поля таблицы Access текстовые. Если числовые, то надо убрать апострофы из поисковой строки.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 Set rst = db.TableDefs("Таблица1").OpenRecordset
 
 For i = 1 To Range("A" & Cells.Rows.Count).End(xlUp).Row - 1
   rst.findfirst "Поле1='" & Range("a" & 1 + i).Value & "' And Поле2='" & Range("b" & 1 + i).Value & "'"
   if rst.nomatch then
      rst.AddNew
      rst("Поле1").Value = Range("a" & 1 + i).Value
      rst("Поле2").Value = Range("b" & 1 + i).Value
      rst("Поле3").Value = Range("c" & 1 + i).Value
   else
      rst.edit
      rst("Поле3").Value = Range("c" & 1 + i).Value
   end if
   rst.update
 Next
1
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 7
02.05.2015, 00:02  [ТС]
К сожалению ошибку дает.

---------------------------
Microsoft Visual Basic for Applications
---------------------------
Run-time error '3251':

Application-defined or object-defined error
---------------------------
ОК Справка
---------------------------
0
Эксперт MS Access
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
02.05.2015, 01:03
К сожалению, Вы не сказали на какой строке ошибка. Если она на команде объявления объекта DAO.DBEngine.120, то можно предположить, что на данном ПК версия версия акса не выше 2003.
Если на командах рекордсета AddNew или Edit, то надо взять иной тип рекордсета. Возможно применяемый по умолчанию не позволяет изменять данные в текущей среде выполнения. Попробуйте изменить объявление рекордсета на
Visual Basic
1
Set rst = db.OpenRecordset("select * from Таблица1", 2)  'dbopendynaset
1
0 / 0 / 0
Регистрация: 01.05.2015
Сообщений: 7
02.05.2015, 01:13  [ТС]
mobile, спасибо огромное.
Все заработало.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.05.2015, 01:13
Помогаю со студенческими работами здесь

Подправить макрос отправки задач из Excel в Outlook
Доброго времени суток! Во вложении файл с примером отправки задач в Outlook из Excel. После нажатия кнопки Start задача отправляется...

Проблемы импорта в Access из Excel
Добрый день, подскажите пожалуйста как решить данную проблему. Необходимо импортировать данные в таблицу из excel. Возникают проблемы, с...

Подскажите способ импорта из Excel в Access
Всем добрый день! Очень прошу помощи с такой задачей: есть файл Excel, в нем хранятся данные в виде таблицы, но с кучей комментариев,...

Нестабильность импорта таблиц excel в access
Доброго времени суток! Кто нибудь сталкивался с такой ситуацией: при импорте таблицы xlsx в access 2007 иногда в итоговой таблице строки...

Обработать в цикле ячейки листа из Access и запустить макрос Excel-файла из Access
Access 2007, Excel 2007. Две задачи: обработать в цикле ячейки листа из Accessa и запустить макрос Excel-ного файла из Accessa. Первая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru