• ベストアンサー

エクセルからACCESSへマクロでワークシート変換していますが・・・

ACCESSで作ったクエリを一度エクセルにエクスポート(マクロを使ってワークシート変換)後、エクスポート先のシートとは別シート(同一ブック内)で集計し、集計結果をACCESSへインポート(マクロを使ってワークシート変換)させたいのですが、前回の集計結果がインポートされてしまい、新しい集計結果が反映されません。 一度エクセルのブックを開けば新しい集計結果が取り込めます。 何故でしょうか? またブックを開かずに最新のエクセルの集計結果をACCESSに反映させる方法はありますでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

Excelのファイルを開いて保存する記述です。 下記の場合コマンドボタンCmd1のクリック時のイベントに記述した場合。 マクロでエクスポートする部分はDoCmd.TransferSpreadsheet・・の部分です。エクセルファイル名.xlsはフルパスで記述してください。 参照設定のMicrosoft Excel *.* ObjectLibraryにチェックされているか確認しチェックされてなければチェックを入れて下さい。*.*はお使いのAccessのバージョンに合ったものが表示されているはずです。 Private Sub Cmd1_Click() On Error GoTo Err_Cmd1_Click Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Dim xlSheet As Excel.Worksheet DoCmd.TransferSpreadsheet acExport, 8, "XXX", "エクセルファイル名.xls", False, "" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open("エクセルファイル名.xls") Set xlSheet = xlBook.Worksheets(1) xlApp.Quit Set xlSheet = Nothing Set xlBook = Nothing Set xlApp = Nothing Exit_Cmd1_Click: Exit Sub Err_Cmd1_Click: MsgBox Err.Description Resume Exit_Cmd1_Click End Sub

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>一度エクセルのブックを開けば新しい集計結果が取り込めます。 状況が分かりにくいですが・・・ Accessでエクスポート後、ExcelのBookを開き別シートで集計した後、Excelを閉じAccessからインポートしても反映されないという事なのでしょうか? そうでなければExcelにエクスポート後すぐAccessにインポートする。ということでしょうか? この場合はExcel上で再計算されていないためだと思うのですが・・。 AccessからExcelのBookを開き再計算させれば良いと思うのですが。 ExcelのシートをAccessのテーブルにリンクしシートにデータを追加してもExcelのシート内で再計算はされませんから。 >またブックを開かずに最新のエクセルの集計結果をACCESSに反映させる方法はありますでしょうか? 開かないと集計を反映できないと思います。VBでExcelを閉じた状態で再計算させるのは出来ると思います。

shin1966
質問者

補足

ありがとうございます。 Excelにエクスポート後直ぐにAccessにインポートしています。 AccessからExcelのBookを開く方法を教えていただけますでしょうか? お手数をお掛けいたします。宜しくお願いいたします。

  • 9013yagi
  • ベストアンサー率39% (15/38)
回答No.1

 ちょっと良くわからないので、補足要求を(^_^;  エクスポート後、集計作業はエクセル側で行っている のですか?それともACCESS? >一度エクセルのブックを開けば新しい集計結果が取り込めます。 と書いているということはエクセルではないのかな? 理解力不足で、ココがわかっていません。 同一の動作を再現したいので、再度投稿していただけると 助かります。

shin1966
質問者

補足

ありがとうございます。 補足させていただきます。 集計作業はエクセル側で行っています。 ACCESSからエクセルにデータを渡した後直ぐにエクセルからACCESSにデータを戻しています。 上記の流れでは集計結果がACCESSに反映されないので、確認の為一度エクセルを開き集計結果をエクセルで確認後、エクセルを終了し、再度上記マクロを実行すると今度はACCESSに集計結果が反映されます。 説明がわかりにくくてすみません。 宜しくお願いいたします。