我必须编写一些Access VBA,将Access查询中的数据导出到包含多个工作表的Excel文档中的特定单元格区域。
我无法找到指定工作表和范围的正确方法。
这是我到目前为止所做的:
docmd.TransferSpreadsheet(TransferType:=acExport, SpreadsheetType:=acSpreadsheetTypeExcel8, TableName:=qry_Main, _
FileName:="c:\test.xlsm", _
HasFieldNames:=False, _
Range:="Main!J9:J10")
碎片是Range:="Main!J9:J10"
进行此参考的正确方法是什么?
答案 0 :(得分:4)
您可以使用CopyFromRecordset和自动化:
Sub XLTrans()
''Reference: Microsoft ActiveX Data Object x.x Library
Dim rs As New ADODB.Recordset
Dim xl As Object ''Excel.Application
Dim wb As Object ''Workbook
Set xl = CreateObject("Excel.Application")
''Pick one
''1. New book
Set wb = xl.Workbooks.Add
''2. Existing book
Set wb = xl.Workbooks.Open("z:\docs\book1.xlsx")
''Connection relevant for 2007 or 2010
rs.Open "MyTableOrQuery", CurrentProject.AccessConnection
wb.Sheets("Sheet1").Cells(4, 5).CopyFromRecordset rs
xl.Visible = True
End Sub
请注意,这不包括列标题,但您也可以添加它们,例如:
For i = 0 To rs.Fields.Count - 1
Worksheets("Sheet1").Cells(3, i + 5) = rs(i).Name
Next
答案 1 :(得分:2)
http://msdn.microsoft.com/en-us/library/office/ff844793.aspx http://msdn.microsoft.com/en-us/library/office/aa141565(v=office.10).aspx
您无法使用RANGE进行导出: “ 范围可选变体。字符串表达式,它是有效的单元格范围或电子表格中范围的名称。此参数仅适用于导入。将此参数留空以导入整个电子表格。 导出到电子表格时,必须将此参数留空。如果输入范围,导出将失败。
“