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

Вход

Регистрация

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

 

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

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

365
т.е. теперь все стлбики у вас будут иметь числовой формат?
З.Ы. если хотите практической помощи, потрудитесь приложить пример


 
Ответить
Сообщениет.е. теперь все стлбики у вас будут иметь числовой формат?
З.Ы. если хотите практической помощи, потрудитесь приложить пример

Автор - boa
Дата добавления - 24.12.2019 в 21:04
rtv206 Дата: Вторник, 24.12.2019, 21:45 | Сообщение № 22
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Цитата
т.е. теперь все стлбики у вас будут иметь числовой формат?

Да
К сообщению приложен файл: 9080566.xls (47.0 Kb)
 
Ответить
Сообщение
Цитата
т.е. теперь все стлбики у вас будут иметь числовой формат?

Да

Автор - rtv206
Дата добавления - 24.12.2019 в 21:45
boa Дата: Вторник, 24.12.2019, 22:00 | Сообщение № 23
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
[vba]
Код
sValues = IIf(iCol > 1, sValues & ", ", "") & .Cells(iRow, iCol).Value
[/vba]


 
Ответить
Сообщение[vba]
Код
sValues = IIf(iCol > 1, sValues & ", ", "") & .Cells(iRow, iCol).Value
[/vba]

Автор - boa
Дата добавления - 24.12.2019 в 22:00
rtv206 Дата: Вторник, 24.12.2019, 22:01 | Сообщение № 24
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, Спасибо огромное за помощь)
 
Ответить
Сообщениеboa, Спасибо огромное за помощь)

Автор - rtv206
Дата добавления - 24.12.2019 в 22:01
Nikita085 Дата: Пятница, 03.01.2020, 19:53 | Сообщение № 25
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте boa, воспользовался Вашим макросом для переноса данных
написаным для rtv206, в результате выполнения выскакивает ошибка:
Run-time error -2147217900 (80040e14) Ошибка синтаксиса (пропущен оператор) в выражении запроса
Подскажите как исправить?
К сообщению приложен файл: _WinRAR.rar (38.4 Kb)
 
Ответить
СообщениеЗдравствуйте boa, воспользовался Вашим макросом для переноса данных
написаным для rtv206, в результате выполнения выскакивает ошибка:
Run-time error -2147217900 (80040e14) Ошибка синтаксиса (пропущен оператор) в выражении запроса
Подскажите как исправить?

Автор - Nikita085
Дата добавления - 03.01.2020 в 19:53
boa Дата: Суббота, 04.01.2020, 15:51 | Сообщение № 26
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Здравствуйте, Nikita085,
Это частный случай.
Для того чтобы не было ошибок надо передавать данные в соответствующем формате.
а увас TestTimeDate в таблице Access числовое поле, а в Excel "04.11.2019 00:30:16" и таких несоответствий... в Access поле "F2" имеет формат Long Integer, a в Excel - "Анулирован"
Форматы данных, во-первых должны совпадать, а во-вторых, в SQL-запросе, надо тоже соблюдать синтаксис. число, текст и дата передаются по разному




Сообщение отредактировал boa - Суббота, 04.01.2020, 15:56
 
Ответить
СообщениеЗдравствуйте, Nikita085,
Это частный случай.
Для того чтобы не было ошибок надо передавать данные в соответствующем формате.
а увас TestTimeDate в таблице Access числовое поле, а в Excel "04.11.2019 00:30:16" и таких несоответствий... в Access поле "F2" имеет формат Long Integer, a в Excel - "Анулирован"
Форматы данных, во-первых должны совпадать, а во-вторых, в SQL-запросе, надо тоже соблюдать синтаксис. число, текст и дата передаются по разному

Автор - boa
Дата добавления - 04.01.2020 в 15:51
Nikita085 Дата: Суббота, 04.01.2020, 16:22 | Сообщение № 27
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, прошу помочь мне, так как в SQL-запросах не бум-бум, та и макросами только начал разбиратся
 
Ответить
Сообщениеboa, прошу помочь мне, так как в SQL-запросах не бум-бум, та и макросами только начал разбиратся

Автор - Nikita085
Дата добавления - 04.01.2020 в 16:22
boa Дата: Суббота, 04.01.2020, 19:40 | Сообщение № 28
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Nikita085,
Даже не знаю чем вам помочь...
сделать все за вас? - мне это не интересно
А объяснять основы языка запросов - дык, я ж не препад
Из того примера, что вы приложили, можно сделать вывод, что и в базах данных вы тоже не разбираетесь
Попробуйте в Access сделать нужную таблицу, создайте в конструкторе запрос на добавление данных и посмотрите синтаксис в SQL-пердставлении. Может это вам поможет...


 
Ответить
СообщениеNikita085,
Даже не знаю чем вам помочь...
сделать все за вас? - мне это не интересно
А объяснять основы языка запросов - дык, я ж не препад
Из того примера, что вы приложили, можно сделать вывод, что и в базах данных вы тоже не разбираетесь
Попробуйте в Access сделать нужную таблицу, создайте в конструкторе запрос на добавление данных и посмотрите синтаксис в SQL-пердставлении. Может это вам поможет...

Автор - boa
Дата добавления - 04.01.2020 в 19:40
Nikita085 Дата: Суббота, 04.01.2020, 21:14 | Сообщение № 29
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
что и в базах данных вы тоже не разбираетесь

Конечно не разбираюсь(((((

Пока разберусь то поздно будет((((
Курсач необходимо сдать через 4 дня.
Прошу помощи))))
 
Ответить
Сообщение
что и в базах данных вы тоже не разбираетесь

Конечно не разбираюсь(((((

Пока разберусь то поздно будет((((
Курсач необходимо сдать через 4 дня.
Прошу помощи))))

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

365
Коли дело дошло до курсовой, то значит материал вам все же давали
а то, что вы его не выучили, так что ж ...
есть ветка "фриланса", обратитесь туда. За вознаграждение кто-то возьмется


 
Ответить
СообщениеКоли дело дошло до курсовой, то значит материал вам все же давали
а то, что вы его не выучили, так что ж ...
есть ветка "фриланса", обратитесь туда. За вознаграждение кто-то возьмется

Автор - boa
Дата добавления - 04.01.2020 в 23:59
Nikita085 Дата: Воскресенье, 05.01.2020, 11:19 | Сообщение № 31
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, благодарю за помощь(
 
Ответить
Сообщениеboa, благодарю за помощь(

Автор - Nikita085
Дата добавления - 05.01.2020 в 11:19
Pelena Дата: Воскресенье, 05.01.2020, 14:29 | Сообщение № 32
Группа: Админы
Ранг: Местный житель
Сообщений: 19176
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
Nikita085, в чём Ваша задача? Вы вклинились в чужую тему, что уже против Правил форума. Если Вам надо просто импортировать данные из Excel в Access, зачем вообще макрос? Используйте встроенное средство Access (вкладка Внешние данные -- Импорт -- Excel)
Если у вас другая задача, создайте свою тему и опишите её (задачу).


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеNikita085, в чём Ваша задача? Вы вклинились в чужую тему, что уже против Правил форума. Если Вам надо просто импортировать данные из Excel в Access, зачем вообще макрос? Используйте встроенное средство Access (вкладка Внешние данные -- Импорт -- Excel)
Если у вас другая задача, создайте свою тему и опишите её (задачу).

Автор - Pelena
Дата добавления - 05.01.2020 в 14:29
Nikita085 Дата: Воскресенье, 05.01.2020, 18:29 | Сообщение № 33
Группа: Пользователи
Ранг: Новичок
Сообщений: 34
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вы вклинились в чужую тему, что уже против Правил форума.

Извините пожалуйста!
Если у вас другая задача, создайте свою тему и опишите её (задачу).

Хорошо
 
Ответить
Сообщение
Вы вклинились в чужую тему, что уже против Правил форума.

Извините пожалуйста!
Если у вас другая задача, создайте свою тему и опишите её (задачу).

Хорошо

Автор - Nikita085
Дата добавления - 05.01.2020 в 18:29
rtv206 Дата: Воскресенье, 12.04.2020, 22:27 | Сообщение № 34
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, не подскажите как сделать если ошибка при переносе, то выдавать сообщение с текстом "Данные не перенесено. Попробовать еще раз", и после этого запустить макрос переноса еще раз на выполнение, у меня выдает ошибку. Использую такой код.
[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("Base")
        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 = LastRow To LastRow ' создаем строку значений
            For iCol = 1 To LastCol
                sValues = IIf(iCol > 1, sValues & ", ", "") & _
                        IIf(iCol > 22, "", "'") & _
                        IIf(.Cells(iRow, iCol).Value = 0, "Null", Replace(CStr(.Cells(iRow, iCol).Value), ",", ".")) & _
                        IIf(iCol > 22, "", "'")
            Next iCol
            sSQL = "INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");"
'Debug.Print sSQL
            'Заполняем таблицу данными
            CON.Execute sSQL
        Next iRow
    End With
    CON.Close
    If Err > 0 MsgBox("Данные не перенесено. Попробовать еще раз", vbYesNo, "111") = vbYes Then
    Insert2Access
    End If
    
End Sub
[/vba]


Сообщение отредактировал rtv206 - Воскресенье, 12.04.2020, 22:28
 
Ответить
Сообщениеboa, не подскажите как сделать если ошибка при переносе, то выдавать сообщение с текстом "Данные не перенесено. Попробовать еще раз", и после этого запустить макрос переноса еще раз на выполнение, у меня выдает ошибку. Использую такой код.
[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("Base")
        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 = LastRow To LastRow ' создаем строку значений
            For iCol = 1 To LastCol
                sValues = IIf(iCol > 1, sValues & ", ", "") & _
                        IIf(iCol > 22, "", "'") & _
                        IIf(.Cells(iRow, iCol).Value = 0, "Null", Replace(CStr(.Cells(iRow, iCol).Value), ",", ".")) & _
                        IIf(iCol > 22, "", "'")
            Next iCol
            sSQL = "INSERT INTO [" & "table" & "] (" & sFields & ") VALUES (" & sValues & ");"
'Debug.Print sSQL
            'Заполняем таблицу данными
            CON.Execute sSQL
        Next iRow
    End With
    CON.Close
    If Err > 0 MsgBox("Данные не перенесено. Попробовать еще раз", vbYesNo, "111") = vbYes Then
    Insert2Access
    End If
    
End Sub
[/vba]

Автор - rtv206
Дата добавления - 12.04.2020 в 22:27
boa Дата: Воскресенье, 12.04.2020, 23:43 | Сообщение № 35
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
Здравствуйте, rtv206,
во первых у вас до строки "If Err > 0 ..." не дойдет, т.к. у вас нет обработчика ошибок в коде. Код просто остановится на месте ошибки.
во-вторых без файлов нельзя понять где ошибка.
и в третьих, если у вас ошибка произойдет после частичного импорта, вы опять все данные будете импортировать с начала?




Сообщение отредактировал boa - Воскресенье, 12.04.2020, 23:43
 
Ответить
СообщениеЗдравствуйте, rtv206,
во первых у вас до строки "If Err > 0 ..." не дойдет, т.к. у вас нет обработчика ошибок в коде. Код просто остановится на месте ошибки.
во-вторых без файлов нельзя понять где ошибка.
и в третьих, если у вас ошибка произойдет после частичного импорта, вы опять все данные будете импортировать с начала?

Автор - boa
Дата добавления - 12.04.2020 в 23:43
rtv206 Дата: Понедельник, 13.04.2020, 23:03 | Сообщение № 36
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Добрый вечер boa, ))))
Прикладываю файлы примера.
у вас нет обработчика ошибок в коде

Я не знаю как его прикрутить к макросу очень много тем на разных форумах читал.((((
если у вас ошибка произойдет после частичного импорта

Используя макрос написаный Вами частичного импорта не приходилось встречать.
Были ошибки при переносе данных когда не соответствовали названия столбцов, ошибка с типом поля - текст, цифра, и ошибка при открытии файла по сети другими пользователями
К сообщению приложен файл: 4889518.rar (45.9 Kb)
 
Ответить
СообщениеДобрый вечер boa, ))))
Прикладываю файлы примера.
у вас нет обработчика ошибок в коде

Я не знаю как его прикрутить к макросу очень много тем на разных форумах читал.((((
если у вас ошибка произойдет после частичного импорта

Используя макрос написаный Вами частичного импорта не приходилось встречать.
Были ошибки при переносе данных когда не соответствовали названия столбцов, ошибка с типом поля - текст, цифра, и ошибка при открытии файла по сети другими пользователями

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

365
Здравствуйте, rtv206,

Вот вам ссылка на сапорт про Оператор On Error

а в инете, при желании, найдете множество решений.

Ну а под скрепкой ваш макрос с оператором "On Error Resume Next"


 
Ответить
СообщениеЗдравствуйте, rtv206,

Вот вам ссылка на сапорт про Оператор On Error

а в инете, при желании, найдете множество решений.

Ну а под скрепкой ваш макрос с оператором "On Error Resume Next"

Автор - boa
Дата добавления - 13.04.2020 в 23:35
rtv206 Дата: Вторник, 14.04.2020, 21:56 | Сообщение № 38
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, спасибо Вам за помощь)))
Буду тестировать.
 
Ответить
Сообщениеboa, спасибо Вам за помощь)))
Буду тестировать.

Автор - rtv206
Дата добавления - 14.04.2020 в 21:56
rtv206 Дата: Понедельник, 04.05.2020, 21:28 | Сообщение № 39
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 131
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
boa, добрый вечер)
В очередной раз обращаюсь к Вам за помощью:
При переносе данных в Access, если ячейка в Excel пустая то в Access переносится Null.
Как прописать макрос так что бы при пустой ячейке в Excel в Access переносилось тоже пустое поле?
 
Ответить
Сообщениеboa, добрый вечер)
В очередной раз обращаюсь к Вам за помощью:
При переносе данных в Access, если ячейка в Excel пустая то в Access переносится Null.
Как прописать макрос так что бы при пустой ячейке в Excel в Access переносилось тоже пустое поле?

Автор - rtv206
Дата добавления - 04.05.2020 в 21:28
boa Дата: Понедельник, 04.05.2020, 21:43 | Сообщение № 40
Группа: Друзья
Ранг: Ветеран
Сообщений: 550
Репутация: 167 ±
Замечаний: 0% ±

365
rtv206, Здравствуйте,
NULL - это и есть пустота. не путайте с "0"
когда в ячейке пустота, то для VBA кода это действительно "0" и синтаксис SQL-запроса будет выглядеть как "Inser into ... value(..., 0, ...);"
а что бы в Access таблицу записалось пустое значение, заменить "0" на "Null", т.е. "Inser into ... value(..., Null, ...);" , без обрамляющих кавычек.




Сообщение отредактировал boa - Понедельник, 04.05.2020, 21:44
 
Ответить
Сообщениеrtv206, Здравствуйте,
NULL - это и есть пустота. не путайте с "0"
когда в ячейке пустота, то для VBA кода это действительно "0" и синтаксис SQL-запроса будет выглядеть как "Inser into ... value(..., 0, ...);"
а что бы в Access таблицу записалось пустое значение, заменить "0" на "Null", т.е. "Inser into ... value(..., Null, ...);" , без обрамляющих кавычек.

Автор - boa
Дата добавления - 04.05.2020 в 21:43
Мир MS Excel » Вопросы и решения » Excel и другие приложения » Access » Импорт данных в Access (Макросы/Sub)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

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