MS Access VBA для экспорта отфильтрованной формы в Excel - PullRequest
0 голосов
/ 22 апреля 2020

Вот тот, который беспокоил меня около месяца ...

У меня есть форма, которая позволяет пользователям фильтровать записи, достаточно просто. Но я хочу дать им возможность экспортировать отфильтрованные записи в Excel. Я не хочу использовать docmd.outputTo, потому что он не фильтрует записи, он помещает все записи в файл. Я посмотрел вокруг и нашел некоторый код, но проблема в том, что он выводит ВСЕ на форму. Моя цель - вывести отфильтрованные данные на новый лист Excel. Но я все еще очень нов и борюсь с кодом. Я прилагаю изображение для ошибки (ниже) и код спасибо за помощь введите описание изображения здесь

Private Sub cmdExport_Click()

Dim xlApp As Object
Dim xlBook As Object
Dim rs As DAO.Recordset
Dim sql As String
Dim i As Integer

Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
 'This selects form

sql = Forms("ReportForm13").Form.RecordSource 'Your record source if not a subform
'Set rs = CurrentDb

For i = 1 To rs.Fields.Count
xlBook.Sheets(1).Cells(1, i) = rs.Fields(i - 1).Name 'Write Field names to Excel
Next i
xlBook.Sheets(1).Cells(2, 1).CopyFromRecordset rs 'Import the recordset data through Excel

' You can add whatever other formatting you want by running Excel VBA throught the xlApp object

xlApp.Visible = True

Set xlApp = Nothing
Set xlBook = Nothing
Set rs = Nothing
End Sub

Ответы [ 2 ]

1 голос
/ 23 апреля 2020

Вы можете использовать фильтр в форме в качестве критерия в запросе и вместо этого экспортировать этот запрос в Excel. Он просто экспортирует отфильтрованные записи.

0 голосов
/ 23 апреля 2020

Да, именно так. Это в основном то, что сказала Хира Ифтихар, и это выглядит так:

Private Sub cboFilterIsCorporate_Click()

Dim strSQL As String
strSQL = Me.RecordSource
strSQL = "Select * From " & strSQL & " WHERE " & Me.Filter

With CurrentDb.QueryDefs("qryTest")
   .SQL = strSQL
End With

' now export the query  with critera to excel
Dim strOutFile As String

strOutFile = "C:\your_path\Test.xlsx"

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel12Xml, _
      "qryTest", strOutFile, True

End Sub

Вид доступа:

enter image description here

Excel До:

enter image description here

Excel После:

enter image description here

щелкните форму> добавить Кнопка> нажмите кнопку и нажмите «ОК», затем нажмите «Отмена»> щелкните правой кнопкой мыши кнопку и выберите «Создать событие»> нажмите «Построитель кода»> наконец ... вставьте код, который я дал вам в открывшемся окне , Сделайте несколько очень незначительных изменений (должно быть очевидно ... название события щелчка). Теперь вы должны быть хороши к go !! Пишите обратно, если у вас есть дополнительные вопросы! В противном случае, пожалуйста, обновите мой ответ, чтобы признать, что это полезно для других. Спасибо !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...