powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Чайник спрашивает, нужно данные из запроса в заранее заготовленный Excel
4 сообщений из 4, страница 1 из 1
Чайник спрашивает, нужно данные из запроса в заранее заготовленный Excel
    #32333070
Уважаемые программисты мне необходимо данные из запроса в Access'e выгрузить в заранее заготовленный Excel шаблон в Excel начиная с клетки B12.
То есть у меня есть шаблон otchet.XLT у него есть заранее приготовленная шапка, далее в этой заготове описаны названия столбцов и вот в эту заготовку нужно положить данные из запроса в Access. Запрос выполняется из формы, в которой вводятся начальная и конечная даты и нажимается кнопка ОК. Вот по этой кнопке должен выполняться запрос и данные должны выгружатся в заранее заготовленный файл Excel. Что я делаю:
With Application.CurrentProject
strMDB = .Path & "\" & .Name
strXLS = .Path & "\" & "otchpod.XLS"
strXLT = .Path & "\" & "otchpod.XLT"
End With
Set xlsApp = CreateObject("Excel.Application")
xlsApp.Workbooks.Open strXLT
xlsApp.Workbooks("1").Activate
xlsApp.WindowState = xlMaximized
xlsApp.Visible = True
xlsApp.Range("B12").Select
Далее мне как-то надо работать с запросом.
Конструкция вида
With xls.App ActiveSheet Add
'.Collapse Direction:=wdCollapseEnd
'.Range.InsertDatabase , Format:=wdTableFormatSimple2, Style:=16, _
'Destination:=Range("B12"), _
'LinkToSource:=False, _
'Connection:="Query Подключение по датам"
'DataSource:=strMDB
End With
Не работает. Через макрос Excel идти не хочу.
Ну, плжалуйста пришлите хоть один пример с работой в Excel. Может у кого есть что-то типа выгрузки прайс-листа в Excel.
Заранее спасибо.
...
Рейтинг: 0 / 0
Чайник спрашивает, нужно данные из запроса в заранее заготовленный Excel
    #32333093
Фотография АлексейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в аксессе создай рекордсет с результатами для занесения в эксел и циклом по записям этого рекордсета вноси значения в ячейки эксела
...
Рейтинг: 0 / 0
Чайник спрашивает, нужно данные из запроса в заранее заготовленный Excel
    #32333244
Фотография Vsevolod V
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейК
Цикл??? А если записей 5000 или более???

CopyFromRecordSet и только!!!
...
Рейтинг: 0 / 0
Чайник спрашивает, нужно данные из запроса в заранее заготовленный Excel
    #32333894
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, вставка в цикле это тормоза. Но если нужно вставлять в отформатированный отчет небольшого размера с сохранением форматов (размножением формул) и именнованных областей, то можно. Опять же во 2-м Аксе CopyFromRecordset не вызывается (ругань компилятора). Тогда где-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Sub CopyFromRecordset(rst As Recordset, sRange As String, xlWindow As Object, bMove As Integer)
On Error GoTo err_CopyFromRecordset
Dim i As Long
Dim xRange As Object
    If sRange =  "" Then sRange = " A1 "
    Set xRange = xlWindow.ActiveSheet.Range(sRange)
    Err = 0 
    On Error Resume Next
    rst.MoveFirst
    If Err <>  0  Then
        Err =  0 
        GoTo ex_CopyFromRecordset:
    End If
    Dim N As Long
    N = rst.Fields.Count
    Do While Not rst.EOF Or rst.BOF
        For i =  0  To N -  1 
            xRange = rst.Fields(i)
            ' смещение в листе
            Set xRange = xRange.Offset(0, 1).Range("A1")
        Next i
        rst.MoveNext
        If bMove Then
            ' смещение в листе
            ' вставка в лист
            'xlWindow.Selection.Insert - 4121  'Shift:=xlDown
            xRange.Offset(1, 0).EntireRow.Insert -4121
            Set xRange = xRange.Offset(1, -N).Range("A1")
        Else
            'без вставки строк - т.е. без копирования форматов
            Set xRange = xRange.Offset( 1 , -N).Range("A1")
        End If
        '
    Loop
ex_CopyFromRecordset:
    Set xRange = Nothing
    Exit Sub
err_CopyFromRecordset:
    MsgBox Error
    Resume ex_CopyFromRecordset:
End Sub


что интересно, вставка фенек вида "=RC[-3]-RC[-2]-RC[-1]" AS Formula из запросов в ячейки проходит на ура. Т.е. сразу с подсчетом. А вот что-то типа:
DoCmd OutputTo A_QUERY, "OS01", A_FORMATXLS, "C:\Temp\ОС" & Format(Forms![MoveMaterial]![VedomDate], "yymmdd") & ".xls", True
(вместо "стандарного" CopyFromRecordset) ни фига значений не пересчитывает, пока в каждое поле с формулой не влезешь.(разбираться не стал).
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Чайник спрашивает, нужно данные из запроса в заранее заготовленный Excel
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]