MS Access VBA将查询输出转换为Excel格式,但不保存在任何地方
我一直在尝试使用传输电子表格方法,但似乎需要一个输出path。
我只需要找出如何获取给定的查询,并简单地“打开”包含查询输出的Excel文件。 我不需要实际保存在任何地方的文件。
您可以通过创buildExcel实例(或抓取现有的实例)并使用Excel.Range
对象的CopyFromRecordset
函数打开文件而不保存文件。
这假定您的数据在ADOlogging集中。 您需要引用Microsoft Excel XX.0 Object Library
和Microsoft ActiveX数据对象XX库(如果您使用的是ADO,如果使用DAO,则使用您需要的任何DAO引用)
我用这个来抓一个Excel应用程序或创build一个新的Excel是不是已经打开。 我使用WasANewInstanceReturned
来计算如何在最后清理Excel资源。 (很明显,我不想退出Excel,如果它被别的东西使用)。
Function GetExcelApplication(Optional ByRef WasANewInstanceReturned As Boolean) As Excel.Application If ExcelInstanceCount > 0 Then Set GetExcelApplication = GetObject(, "Excel.Application") WasANewInstanceReturned = False Else Set GetExcelApplication = New Excel.Application WasANewInstanceReturned = True End If End Function
然后抓住那个实例
Dim ApXL As Excel.Application, WasANewInstanceReturned as Boolean Set ApXL = GetExcelApplication(WasANewInstanceReturned)
添加一个工作簿
Dim wbExp As Excel.Workbook Set wbExp = ApXL.Workbooks.Add
抓住第一张纸
Dim wsSheet1 As Excel.Worksheet Set wsSheet1 = wbExp.Sheets(1)
将您的logging集的字段名称放在第一行
Dim fld As ADODB.Field Dim col As Integer col = 1 With wsSheet1 For Each fld In rst.Fields .Cells(1, col).Value = fld.Name 'puts the field names in the first row End With col = col + 1 Next fld End With
然后移动字段名称下方的数据
wsSheet1 .Range("A2").CopyFromRecordset rst
瞧! 你有一个excel文件打开,你的数据还没有保存在任何地方!
在执行任何操作之前,我通常将ApXL.ScreenUpdating = False
设置为ApXL.ScreenUpdating = True
。
我会让你缝合在一起,为您的需要。
该文件必须保存在Excel的某个地方才能打开。
如果数据集足够小,可以使用复制/粘贴(这里没有文件)。 否则,只需使用%TEMP%文件夹作为文件位置即可。
编辑:
获取TEMP文件夹的一个简单方法是使用=Environ("TEMP")
我打开并导出一个查询从Excel访问。 首先,我在Excel中创build了一个工作表并保存了它。 然后我在Access(2013)的vba部分创build了一个模块:
Option Compare Database ' Testtoexporttoexcel' Function ExportQuerytoExcel() On Error GoTo ExportQuerytoExcel_Err ' Exports the query to excel to a sheet named Nameofyoursheet DoCmd.TransferSpreadsheet acExport, 10, "nameofyourquery", "yourPath:\nameofyourworkbook", False, "Nameofyour worksheet" ExportQuerytoExcel_Exit: Exit Function ExportQuerytoExcel_Err: MsgBox Error$ Resume ExportQuerytoExcel_Exit End Function -----then add another function that says: Option Compare Database Function OpenExcelFromAccess() 'Opens Excel to the chart Dim MYXL As Object Set MYXL = CreateObject("Excel.Application") With MYXL .Application.Visible = True .workbooks.Open "Yourpath:\nameofyourworkbook" End With 'Application.Quit End Function
希望这有助于,这是我第一次回答一个问题。 阿罗哈