2017-01-09 97 views
0

目的的MS Access,VBA - 導出交叉表到Excel

  1. 從現有的表
  2. 出口通過VBA

APPROACH格式化交叉錶轉換爲Excel交叉表

  1. 創建查詢該pulle d必要的數據
  2. 創建一個交叉查詢,以正確格式化現有表中的數據
  3. !幫助需要!按交叉表查詢到Excel

問題

  1. 我在網上看了看四周,似乎導出交叉表到excel難 - 似乎大多數論壇建議迭代行由行導出交叉表(這是非常令人驚訝的)。有什麼方法可以利用一種方法(例如DoCmd.TransferSpreadsheet)導出交叉表?

爲什麼這個這麼難讓我感到吃驚,道歉的天真

+0

研究如何創建一個數據透視查詢,保存一些研究和使用TransferSpreadsheet的再遵守前面將其導出。如果你想使用vba,你可以通過vba進一步修改它的excel,一旦導出... –

+1

你嘗試了什麼?你收到了什麼錯誤或不想要的結果?數據看起來對我們來說重現了什麼問題? – Parfait

回答

0

跟隨我原來的帖子。 看來你可以使用DoCmd.TransferSpreadsheet來導出一個交叉表。

我定義下面的工作代碼:

outputQuery = [your cross table query] 
outputPath = [save-to file location] 
outputFileName = [save-to file name] 

DoCmd.TransferSpreadsheet acExport, SpreadsheetType:=acSpreadsheetTypeExcel12Xml, TableName:=outputQuery, FileName:=outputPath & outputfilename 
0

我簡單地創建我想在MS Access查詢。

然後在Excel中,我有一個我寫的運行查詢和輸出到表的宏。見下面的例子。

Dim cnString As String 
Dim rs As New ADODB.Recordset 

'Change connection string to an MS Access one 
cnString = "Provider=xx;Server=xx,49168;Database=xx;" 
rs.Open queryName, cnString, adOpenStatic, adLockOptimistic 

'Output Headings 
For i = 1 To rs.Fields.Count 
     Sheets(PasteSheet).Range(pasteCell).Offset(0, i - 1) = rs.Fields(i - 1).Name 
Next i 

'Output data 
Sheets(PasteSheet).Range(pasteCell).Offset(1, 0).CopyFromRecordset rs 
rs.close 

如果你想在MS Access中做到這一切,那麼它不會花費很多修改。你只需要創建一個新的工作簿,然後做一個非常類似於上面的代碼。