2017-01-09 9 views
0

目的ExcelへエクスポートクロスタブMSアクセス、VBA -

  1. 作成し、既存のテーブルAPPROACH

VBA介してExcelにクロスタブフォーマット

  • エクスポートからクロスタブ

    1. 作成されたプルdテーブルに必要なデータ
    2. 既存テーブルのデータを適切にフォーマットするためのクロスクエリを作成しました
    3. !それはほとんどのフォーラムは反復ライン・バイ・ラインをお勧めしますことが表示されます - 困難であり、私はオンラインの周り見てきたし、それはそれはExcelにクロスタブをエクスポート表示されます

    の問題

    1. を得意とするクロスタブクエリをプッシュクロスタスをエクスポートする(これは非常に驚くべきことです)。クロスタブをエクスポートする方法(例:DoCmd.TransferSpreadsheet)を利用する方法はありますか?これは非常に困難であるのはなぜ

    は、認識の甘

  • +0

    はTransferSpreadsheetのを使用して、ピボットクエリを作成する方法についていくつかの研究を行うことを保存し、youcan輸出。 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で実行したい場合は、変更する必要はありません。あなたは単に新しいブックを作成し、上記のコードと非常によく似たことをするだけです。