2014-02-07 131 views
1

我必須編寫一些Access VBA才能將Access查詢中的數據導出到Excel文檔中具有多個工作表的特定範圍的單元格中。docmd.TransferSpreadsheet訪問 - > Excel ////指定目標工作表和範圍

我很難找到正確的方式來指定工作表和範圍

這是我到目前爲止有:

docmd.TransferSpreadsheet(TransferType:=acExport, SpreadsheetType:=acSpreadsheetTypeExcel8, TableName:=qry_Main, _ 
    FileName:="c:\test.xlsm", _ 
    HasFieldNames:=False, _ 
    Range:="Main!J9:J10") 

的碎渣是Range:="Main!J9:J10"

什麼使這個引用的正確方法?

回答

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 
+0

謝謝,我會試試這個,讓你知道。 +1現在。 –

+0

我將如何將Access數據傳輸到現有的Excel工作簿中?我有一個Excel文件的路徑。看起來你的解決方案創建了一個新的工作簿,這不是我需要做的。 –

+0

您可以使用相同的想法打開工作簿。我已經添加了一個註釋。 – Fionnuala

2

http://msdn.microsoft.com/en-us/library/office/ff844793.aspx http://msdn.microsoft.com/en-us/library/office/aa141565(v=office.10).aspx

不能使用範圍出口:。 「 範圍可選,Variant字符串表達式,這是細胞的有效範圍內或在電子表格中的範圍的名稱,這個說法只適用於進口當您導出到電子表格將該參數留空導入整個電子表格。,則必須將該參數留空。如果你輸入一個範圍,導出將失敗。

+0

啊,這教我,我閱讀MSDN時應該花點時間;)+1指出。 –

相關問題