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 

希望这有助于,这是我第一次回答一个问题。 阿罗哈