2016-07-28 1 views
0

MS Accessから抽出されたデータをExcelシートに抽出しようとしています。たとえば、私はという名前の1枚のシートをExcelファイルに使用しています。結果はです(事前定義されたデータもいくつかあります)。ソースファイルとして出力ファイルにコピーします。次に、MS Accessの一部のOutputTableが、結果シートで抽出されるように明示的に言及されたDoCmd.TransferSpreadsheetを使用して出力ファイルに抽出されます。データは正常になりますが、シートという結果の余分なシートがありますが、結果1はMs AccessのOutputTableと同じデータで作成されますが、結果は使用されません。私が使用していますAccesからExcelに抽出されたデータが、定義されたシートよりも余分なシートに自動的に渡されます。

コードは以下に記載されて:

SourceFile = CurrentProject.Path & "\Template\" & "Input_Template.xlsx" 
    DestinFile = CurrentProject.Path & "\Output\" & "Output_" & sDateTimeStamp & ".xlsx" 
    FileCopy SourceFile, DestinFile 
    DoCmd.TransferSpreadsheet acExport, , "OutputTable", DestinFile, False, "Result" 

私はこれらのフォルダテンプレート(Input_Template.xlsxファイルを持つ)とデータベースが配置されているのと同じパスの下に私のシステムで作成された出力フォルダを持っています。

私はそれが間違ったやり方で行われているか、何らかの設定が必要か、何か不足している可能性があります。どんな助けも高く評価されます。

ありがとうございました! 蜂蜜

+0

たぶん - あなたにエラーを与えることになっていますので、I - 最後の引数「結果」は、エクスポート時に使用すべきではありません。それはあなたのためにそれが – dbmitch

答えて

1

TransferSpreadsheetは、事前にフォーマットされたテンプレートにエクスポートするのには適していません。代わりにExcelライブラリのCopyFromRecordsetメソッドを使用してください。以下の例では、 "B2"セルを開始する宛先テンプレートファイルの "Result"スプレッドシートにOutputTableの内容をダンプします。

Dim xlApp As Object 
Dim xlWork As Object 
Dim xlSheet As Object 
Dim rsExportResults As Recordset 

Set rsExportResults = CurrentDb.OpenRecordset("OutputTable") 

Set xlApp = CreateObject("Excel.Application") 
xlApp.Visible = True 
Set xlWork = xlApp.Workbooks.Open(DestinFile) 
Set xlSheet = xlWork.Sheets("Result") 

xlSheet.Range("B2").CopyFromRecordset rsExportResults 
+0

おかげセルゲイをするにも方法がどのように動作するか分かりません。これは、ここで試している方法を抽出するアプローチの1つです。しかし、前に仕事をしていたプロジェクトがありました。私がここでミスしているものはわからない。 – honey

関連する問題