Создание новой электронной таблицы Excel из динамического списка в форме MS Access
У меня есть поисковая система, построенная на форме в MS Access. Форма использует ListBox ("List1") для отображения результатов на основе поиска по ключевым словам. Я хотел создать кнопку ("Command47"), которая будет отображать результаты списка в новой электронной таблице Excel. Я не хочу сохранять файл в путь к файлу, просто хочу его открыть. Ниже то, что у меня сейчас есть:
Private Sub Command47_Click()
Dim qdef As DAO.QueryDef
Set qdef = CurrentDb.CreateQueryDef("VFE")
qdef.SQL = Me.List1.RowSource
qdef.Close
Set qdef = Nothing
CurrentDb.QueryDefs.Delete "VFE"
End Sub
Нужно знать, куда идти отсюда.
1 ответ
Решение
По сути, вам нужно открыть экземпляр Excel, создать объект рабочей книги и заполнить его набором записей.
Чтобы это работало, вам нужно добавить ссылку на библиотеку объектов Microsoft Excel versionnumber.
Private Sub Command47_Click()
Dim qd As DAO.QueryDef, rs As DAO.Recordset
Dim xl As Excel.Application, wbk As Excel.Workbook, wsh As Excel.Worksheet
Dim i As Long
Set qd = CurrentDb.CreateQueryDef("VFE")
qd.SQL = Me.List1.RowSource
Set rs = qd.OpenRecordset(dbOpenSnapshot)
Set xl = New Excel.Application
xl.visible = False
Set wbk = xl.Workbooks.Add(1) ' Creates a new workbook with 1 worksheet
Set wsh = wbk.Worksheets(1) ' Selects the first worksheet
With wsh
.Name = left(qd.Name, 32)
.Range("A1").Value = qd.Name
For i = 1 To rs.Fields.Count ' Populates the 2nd row with field names
With .cells(2, i)
.Value = rs.Fields(i - 1).Name
.font.bold = True
End With
Next
.Range("A3").CopyFromRecordset rs
End With
xl.visible = True
qd.close
CurrentDB.QueryDefs.Delete("VFE")
End Sub
Надеюсь, это поможет!