Создание новой электронной таблицы 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

Надеюсь, это поможет!

Другие вопросы по тегам