我一直在尝试使用转移电子表格方法,但它们似乎需要输出路径。
我只需要了解如何接受一个给定的查询,然后简单地打开"打开"包含查询输出的Excel文件。我不需要实际保存在任何地方的文件。
答案 0 :(得分:1)
您可以通过创建Excel实例(或抓取现有实例)并使用CopyFromRecordset
对象的Excel.Range
功能来打开文件而不保存文件。
这假设您的数据位于ADO记录集中。您需要引用Microsoft Excel XX.0 Object Library
和Microsoft ActiveX Data Objects X.X Library`(如果您使用的是ADO。如果您使用DAO,则使用您需要的任何DAO引用)
我用它来抓取一个Excel应用程序或创建一个新的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)
将记录集的字段名称放在第一行
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
。
我会让你根据自己的需要将它拼接在一起。
答案 1 :(得分:0)
文件必须保存在某处,以便Excel打开它 如果数据集足够小,您可以使用复制/粘贴(此处没有文件)。否则,只需使用%TEMP%文件夹作为文件位置。
编辑:
获取TEMP文件夹的一种简单方法是使用=Environ("TEMP")
答案 2 :(得分:0)
我打开并从访问excel导出查询。首先,我在excel中创建了一个工作表并保存了它。然后我在Access(2013)的vba部分创建了一个模块:
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
希望这有帮助,这是我第一次回答问题。 阿罗哈