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

Вход

Регистрация

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

 

= Мир MS Excel/Выбрать данные из таблицы Access в Ексель - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Выбрать данные из таблицы Access в Ексель
Chelovekov Дата: Вторник, 05.02.2019, 12:22 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 315
Репутация: 0 ±
Замечаний: 80% ±

Excel 2016
Здравствуйте, Уважаемые форумчане. Прошу Вас, при помощи VBA выбрать данные из базы Access в Ексель. Есть файл access в котором содержатся 5 запросов, мне нужно чтобы информация, из каждого запроса, выгрузить в определенную книгу Ексель, назовем (Анализ), в определенные листы, назовем их, (1,2,3,4,5). Запросы в access называются так же , (1,2,3,4,5). Спасибо всем кто откликнется.
 
Ответить
СообщениеЗдравствуйте, Уважаемые форумчане. Прошу Вас, при помощи VBA выбрать данные из базы Access в Ексель. Есть файл access в котором содержатся 5 запросов, мне нужно чтобы информация, из каждого запроса, выгрузить в определенную книгу Ексель, назовем (Анализ), в определенные листы, назовем их, (1,2,3,4,5). Запросы в access называются так же , (1,2,3,4,5). Спасибо всем кто откликнется.

Автор - Chelovekov
Дата добавления - 05.02.2019 в 12:22
bmv98rus Дата: Вторник, 05.02.2019, 13:00 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4119
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
Простo сделайте MSQuery с соответствующих листов в базу access но в качестве источника выбрать не таблицы, а query. Если нужно обновлять, то макросом прописать только обновление. Из бонусов - это сразу умная таблица, можно данные автоматом перед охранением удалять. ….


Замечательный Временно просто медведь , процентов на 20.
 
Ответить
СообщениеПростo сделайте MSQuery с соответствующих листов в базу access но в качестве источника выбрать не таблицы, а query. Если нужно обновлять, то макросом прописать только обновление. Из бонусов - это сразу умная таблица, можно данные автоматом перед охранением удалять. ….

Автор - bmv98rus
Дата добавления - 05.02.2019 в 13:00
Chelovekov Дата: Вторник, 05.02.2019, 13:10 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 315
Репутация: 0 ±
Замечаний: 80% ±

Excel 2016
Спасибо, но я хочу при помощи VBA. Я на просторах интернета нашел вот такой код VBA , попробовал, вроде работает, но как его переделать под мои нужны, которые я описал сверху, может поможете.

[vba]
Код
Sub выбрать_1()

Dim connDB As New ADODB.Connection
Dim rs As New ADODB.Recordset

Dim err As ADODB.Error
Dim res As Variant

Dim ws As Worksheet

Dim sPath, sTable As String
Dim i As Byte

On Error GoTo ErrorSub

sPath = " M:\ÒÅÍÍÈÑ\Ìóæ÷èíû\Ìóæ÷èíû_Òåííèñ.accdb"

Set ws = Worksheets("1")

sTable = "1"

connDB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath
connDB.Open

Set rs = connDB.Execute("SELECT * FROM " & sTable)

For i = 1 To rs.Fields.Count
ws.Cells(3, i).Value = rs.Fields(i - 1).Name
Next i

ws.Range("A4:K200").ClearContents

ws.Range("A4").CopyFromRecordset rs

ErrorSub:
For Each err In connDB.Errors
res = MsgBox(err.Description & Chr(13) & Chr(13) & "Èñòî÷íèê îøèáêè: " & err.Source, , " Îøèáêè ðàáîòû ñ áàçîé äàííûõ !")
Next

ClearMemory:

rs.Close
connDB.Close
Set rs = Nothing
Set connDB = Nothing

End Sub
[/vba]


Сообщение отредактировал Chelovekov - Вторник, 05.02.2019, 13:25
 
Ответить
СообщениеСпасибо, но я хочу при помощи VBA. Я на просторах интернета нашел вот такой код VBA , попробовал, вроде работает, но как его переделать под мои нужны, которые я описал сверху, может поможете.

[vba]
Код
Sub выбрать_1()

Dim connDB As New ADODB.Connection
Dim rs As New ADODB.Recordset

Dim err As ADODB.Error
Dim res As Variant

Dim ws As Worksheet

Dim sPath, sTable As String
Dim i As Byte

On Error GoTo ErrorSub

sPath = " M:\ÒÅÍÍÈÑ\Ìóæ÷èíû\Ìóæ÷èíû_Òåííèñ.accdb"

Set ws = Worksheets("1")

sTable = "1"

connDB.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath
connDB.Open

Set rs = connDB.Execute("SELECT * FROM " & sTable)

For i = 1 To rs.Fields.Count
ws.Cells(3, i).Value = rs.Fields(i - 1).Name
Next i

ws.Range("A4:K200").ClearContents

ws.Range("A4").CopyFromRecordset rs

ErrorSub:
For Each err In connDB.Errors
res = MsgBox(err.Description & Chr(13) & Chr(13) & "Èñòî÷íèê îøèáêè: " & err.Source, , " Îøèáêè ðàáîòû ñ áàçîé äàííûõ !")
Next

ClearMemory:

rs.Close
connDB.Close
Set rs = Nothing
Set connDB = Nothing

End Sub
[/vba]

Автор - Chelovekov
Дата добавления - 05.02.2019 в 13:10
bmv98rus Дата: Вторник, 05.02.2019, 17:52 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4119
Репутация: 769 ±
Замечаний: 0% ±

Excel 2013/2016
в определенную книгу Ексель
означавет что вы экспортируете результат Query в Excel и тогда перенос темы оправдан, но код приведенный не подходит. Если вы хотите загрузить данные, то есть импортировать, то тогда код подходит но ветка Excel должна была остаться. В любом случае, если вы не можете самостоятельно скорректировать код, то с чем связано желание получить решение на VBA? Мазохизм?


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Вторник, 05.02.2019, 17:53
 
Ответить
Сообщение
в определенную книгу Ексель
означавет что вы экспортируете результат Query в Excel и тогда перенос темы оправдан, но код приведенный не подходит. Если вы хотите загрузить данные, то есть импортировать, то тогда код подходит но ветка Excel должна была остаться. В любом случае, если вы не можете самостоятельно скорректировать код, то с чем связано желание получить решение на VBA? Мазохизм?

Автор - bmv98rus
Дата добавления - 05.02.2019 в 17:52
krosav4ig Дата: Вторник, 05.02.2019, 20:54 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 997 ±
Замечаний: 0% ±

Excel 2007,2010,2013
[vba]
Код
Sub выбрать_1()
      Const sPath$ = "d:\Desktop\Реестр договоров.accdb"
      Dim sConn, oRS As Object
10    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath
20    On Error GoTo err
30    Set oRS = CreateObject("adodb.recordset")
40    For i = 1 To 5
50        rr = oRS.Open("select * from " & i, sConn)
60        With Sheets(i & "")
70            .UsedRange.Delete
80            With .ListObjects.Add(xlSrcQuery, oRS, , , .[A1])
90                .Refresh: .Unlink
100           End With
110       End With
120       oRS.Close
130   Next
140   Set oRS = Nothing
150   On Error GoTo 0
160   Exit Sub
err:
170    MsgBox "An error #" & err.Number & " (" & err.Description & ") has occurred in procedure выбрать_1 on line " & Erl
End Sub
[/vba]


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460

Сообщение отредактировал krosav4ig - Вторник, 05.02.2019, 20:54
 
Ответить
Сообщение[vba]
Код
Sub выбрать_1()
      Const sPath$ = "d:\Desktop\Реестр договоров.accdb"
      Dim sConn, oRS As Object
10    sConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sPath
20    On Error GoTo err
30    Set oRS = CreateObject("adodb.recordset")
40    For i = 1 To 5
50        rr = oRS.Open("select * from " & i, sConn)
60        With Sheets(i & "")
70            .UsedRange.Delete
80            With .ListObjects.Add(xlSrcQuery, oRS, , , .[A1])
90                .Refresh: .Unlink
100           End With
110       End With
120       oRS.Close
130   Next
140   Set oRS = Nothing
150   On Error GoTo 0
160   Exit Sub
err:
170    MsgBox "An error #" & err.Number & " (" & err.Description & ") has occurred in procedure выбрать_1 on line " & Erl
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 05.02.2019 в 20:54
Chelovekov Дата: Среда, 06.02.2019, 13:34 | Сообщение № 6
Группа: Проверенные
Ранг: Обитатель
Сообщений: 315
Репутация: 0 ±
Замечаний: 80% ±

Excel 2016
Добрый день, скопировал ваш код, вставил путь до своей базы. выдает ошибку. Может нужно что нибудь предварительно сделать ??
К сообщению приложен файл: 0361924.png (21.3 Kb)
 
Ответить
СообщениеДобрый день, скопировал ваш код, вставил путь до своей базы. выдает ошибку. Может нужно что нибудь предварительно сделать ??

Автор - Chelovekov
Дата добавления - 06.02.2019 в 13:34
Chelovekov Дата: Среда, 06.02.2019, 13:35 | Сообщение № 7
Группа: Проверенные
Ранг: Обитатель
Сообщений: 315
Репутация: 0 ±
Замечаний: 80% ±

Excel 2016
Добрый день, скопировал ваш код, вставил путь до своей базы. выдает ошибку. Может нужно что нибудь предварительно сделать ??
К сообщению приложен файл: 2736796.png (21.3 Kb)
 
Ответить
СообщениеДобрый день, скопировал ваш код, вставил путь до своей базы. выдает ошибку. Может нужно что нибудь предварительно сделать ??

Автор - Chelovekov
Дата добавления - 06.02.2019 в 13:35
  • Страница 1 из 1
  • 1
Поиск:

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