Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2012, 19:44   #1
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию Загрузка данных из Excel в Access

Коллеги, подскажите, а возможно ли макросом из Excel инициировать загрузку данных из Excel в Access?
То есть есть массив (таблица) в Excel, она загружается в БД Access через сохраненную операцию импорта в Accesse. Но импорт в Access (инициированный в Access) каждый раз при заливке данных делать неудобно, возможно ли как-то сделать это прямо из Excel?
Zorg вне форума Ответить с цитированием
Старый 31.07.2012, 20:10   #2
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Возможно.
Ниже фрагмент рабочего кода
Через Insert при больших объемах получается дольше,во всяком случае у меня так.
Код:
Const sCn1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="


    Dim Sh1 As Worksheet, F_name As String, DD
   
        MY_Path = ThisWorkbook.Path + "\"
        Set Wb = Workbooks.Open(F_name)
        Set Sh1 = Wb.Worksheets(1)
        lLastRow = Sh1.UsedRange.Rows.Count
        DD = Sh1.Range("E1:E" & lLastRow)
        Dim rs As Object, cn As Object
        Set rs = CreateObject("ADODB.Recordset")
        Set cn = CreateObject("ADODB.Connection")
        Dim sCon As String, sSql As String
        sCon = sCn1 + MY_Path & "RX.mdb"
        cn.Open sCon
        If Not cn.State = 1 Then Exit Sub
        sSql = "SELECT * FROM Товар ; "
        rs.Open sSql, cn, 1, 3
        For n = 2 To UBound(DD)
                If DD(n, 1) <> "" Then
                        rs.AddNew
                        rs(0) = n
                        rs(1) = DD(n, 1)
                End If
        Next
        rs.Update
        rs.Close:
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 31.07.2012 в 20:13.
doober вне форума Ответить с цитированием
Старый 01.08.2012, 10:10   #3
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Возможно.
Ниже фрагмент рабочего кода
Через Insert при больших объемах получается дольше,во всяком случае у меня так.

[/CODE]
doober, большое спасибо за ответ! А можно попросить прокомментировать код, что в нем что значит, чтобы я смог его приспособить под свои нужды? Построчно, чтобы знать, что менять...
Спасибо!
Zorg вне форума Ответить с цитированием
Старый 01.08.2012, 13:04   #4
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Цитата:
Сообщение от Zorg Посмотреть сообщение
doober, большое спасибо за ответ! А можно попросить прокомментировать код Построчно, чтобы знать, что менять...
Это самое нудное для меня.
Прикрепите образцы файлов,мне проще код написать
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.08.2012, 13:49   #5
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Это самое нудное для меня.
Прикрепите образцы файлов,мне проще код написать
Doober, вот образцы файлов.
Спасибо!
Вложения
Тип файла: rar Вторичные продажи.rar (39.0 Кб, 21 просмотров)
Тип файла: rar База данных вторичных продаж old 1.rar (20.8 Кб, 27 просмотров)
Zorg вне форума Ответить с цитированием
Старый 01.08.2012, 15:20   #6
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Реализовал немного не по стандарту,но по другому не мог выразить свое отношение(имена AS..) к создателю базы.
Вложения
Тип файла: rar Вторичные продажи.rar (49.5 Кб, 48 просмотров)
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 01.08.2012, 15:51   #7
Zorg
Пользователь
 
Регистрация: 18.04.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Реализовал немного не по стандарту,но по другому не мог выразить свое отношение(имена AS..) к создателю базы.
Doober, Преогромное спасибо, работает!
Теперь только осталось понять, как
(база, какая есть, в такую и качаю... )
Zorg вне форума Ответить с цитированием
Старый 01.08.2012, 17:34   #8
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Реализовал немного не по стандарту,но по другому не мог выразить свое отношение(имена AS..) к создателю базы.
а вы не могли бы еще пример (на данном примере) показать как с акссеса в эксель сделать такой же переброс данных?
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 01.08.2012, 17:48   #9
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Азы ЗДЕСЬ
Применение всегда можно подстроить под себя

Для данного примера фрагмент кода


Код:
strSql = " SELECT [Вторичные продажи].* " & _
" FROM [Вторичные продажи] " & _
" WHERE [Код месяца продажи]=" & 201108
Set rs = cn.Execute(strSql)
Range("a1").CopyFromRecordset rs
Анализ,обработка данных Недорого

Последний раз редактировалось doober; 01.08.2012 в 17:52.
doober вне форума Ответить с цитированием
Старый 01.08.2012, 17:52   #10
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от doober Посмотреть сообщение
Для данного примера фрагмент кода

Код:
strSql = " SELECT [Вторичные продажи].* " & _
" FROM [Вторичные продажи] " & _
" WHERE [Код месяца продажи]=" & 201108
Set rs = cn.Execute(strSql)
Range("a1").CopyFromRecordset rs
его нужно заменить на этот фрагмент:
Код:
 strSql = " INSERT INTO [Вторичные продажи] ( [Код SKU], [Код ТТ], [Код месяца продажи], [Код дистрибутора], [Количество, шт], [Продажи, кг], [Сумма, руб] ) " & _
" SELECT '" & КодSKU & "' As Pipez1 , '" & КодТТ & "' As Pipez2, " & Кодмесяца & " As Pipez3, " & Коддистрибутора & "  As Pipez4, " & Количество & _
" As Pipez5," & Продажи & " As Pipez6," & Сумма & " As Pipez7;"
Count = Count + 1
  cn.Execute strSql
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт-экспорт данных Excel-Access, и из Access-Excel Людвиг Microsoft Office Access 3 27.10.2011 14:38
Загрузка БД Access в Excel maksimka2112 Microsoft Office Excel 7 07.05.2011 17:39
загрузка данных из excel alex_pm Microsoft Office Excel 0 29.03.2011 18:58
загрузка данных из excel в word pingvi Microsoft Office Excel 2 07.07.2010 16:07
Загрузка данных из Access в TDBComboBox KiLLiR БД в Delphi 6 21.01.2009 13:19