• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数1491
  • ありがとう数1

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

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

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)

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

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.1

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • Accessワークシートの変換における条件の付け方

    よろしくお願いします。 ■前提条件 OS:XP Access version: 不明(2003以降だと) 技術力:Accessの初歩段階です。提供されているマクロを いじっている程度。プログラミングをAccessに書いたことなし。 ■サマリー Access-マクロ-ワークシートの変換(エクスポート)でクエリにあるデータの有無を判定し、データがあるクエリのみExcelに出力したいです。 ■詳細 Accessで複数のクエリ(1~10クエリ)があるとします。 そのクエリには、各クエリが参照している大元データによって、 データあるクエリ、ないクエリがあります。 たとえば、クエリの1~5までデータがあり、残りはデータがない とし、データがある1~5まで同一ファイルのExcel出力したいと します。1ファイルの中に5シート(クエリ1~5)ある状態です。 Accessのマクロ-ワークシートの変換で、指定したクエリは同一ファイルに複数シートとして出力できることまではできています。 ※この場合、ワークシートの変換には、すべてのクエリを指定し、 すべて出力することにしています。 ただ、データがないシートを出力したくないのですが、どのように データある、なしを判断し、出力すれば良いのでしょうか? 補足 もしくは、一旦データの有無は関係なく、全てのデータは出力し、 Excelのマクロにて制限するなどが考えれますが・・・

  • AccessのテーブルデータをExcelの特定のワークシート名にエクスポートすることは可能ですか

    AccessのテーブルデータをExcelにエクスポートするようマクロを設定しているのですが、そのファイルの中の特定のシートにエクスポートすることは可能ですか?1つのExcelファイルの中で、エクスポートするテーブルを分けたいのです。 マクロですと、"ワークシート変換"アクションの引数[ファイル名]欄で何か設定するのでしょうか? それともAccessから直接は無理なので、Excelのマクロで自動化したほうがよろしいのでしょうか?教えてください。

  • Accessのクエリをマクロでエクスポートしたい

    Access2002を使っています。 マクロでクエリをExcelファイルにエクスポートしたいのですが、どうしたらいいかわかりません。 「ワークシート変換」を選択してもテーブルしか選べないので・・・ ご存知の方、どうぞ優しくご教授ください~

  • Excelにデータをエクスポートする

    Access2003のクエリをExcel2003へデータエクスポートするのに、一行目の項目名を同じものにしておくと、既存の名前を付けたExcelブックの既存の名前を付けたワークシートにデータを書き込むことができていました。日々増えて行くAccessデータを抽出してExcelで利用するのに使っていました。 同じことをAccess2010からExcel2010へのエクスポートで実行すると、Excelブックが上書きされて、Excelブック内の他の既存ワークシートがなくなり、エクスポートされたデータのワークシートのみになってしまいます。 2003のときはエクスポートしてそのまま使えたのに、2010では手間が増えてしまいました。2010でも同じように、既存のワークシートに書き込むことをできないものなのでしょうか?

  • Access2002でExcel2002のデータをインポートしようとした際に起こるエラー

    予めExcel2002で作成したワークシート(名前付)に、Access2002から一度データをエクスポートします。 この時点では旨くいっています。 Excelに出力する理由は回帰分析等、いくつかの分析を行う為で、Accessがクエリに搭載していない関数を使用するためです。 ここで、分析結果を別シート(同一ブック内)で参照するのですが、この参照するセル範囲(名前付部分)をインポートすると実際にインポートしたいのは分析結果である数値なのですが、インポートできず「データ型の変換エラー」が発生します。 VBで書くことも検討したのですが、ロジックが大変ややこしくなることと、Excelへ出力した方が時間的に早いので、エクスポートした後、結果数値のみをインポートするという手順をとっています。 インポートしようとしているデータは(数値)(テキスト)(日付)(日付)(数値)(数値)(数値)(数値)の順で、1行目にインポートしたいデータを配置しています。 このAccessからExcelへデータをエクスポートし、ExcelからAccessへ関数の入っているセルに存在する結果数値のみを取り込む方法をお教え下さい。 よろしく御願いします。

  • ACCESSで、テキストファイルをインポートしたい

    宜しくお願い致します。 ACCESSで、テキストファイルをインポートしてテーブルを作成したいのですが、ファイル→インポートを選択して、ウィザードを開く方法は分かるのですが、マクロを作成してインポートは出来ないでしょうか? excel、CSVファイルでしたら、「ワークシート変換」、「テキスト変換」のマクロでインポートしたりエクスポートしたり出来ると思うのですが・・・、 (1)テキストファイルをインポートしたり、エクスポートしたりする場合、どのようなマクロがあるのでしょうか。 (ためしに、「出力」マクロで、あるテーブルをCSVファイルにエクスポートしてみたのですが、カンマ区切りにできず、excelのような枠付きのテキストファイルになってしまいました。) (2)容量が大きいデータの場合は、テキストファイルでエクスポートしたほうが良い・・・という認識に間違いはありませんでしょうか。 質問が一つ増えてしまいましたが、宜しくお願い致します。

  • Access97 → Access2002

    最近会社でAccess97からAccess2002へ乗り換えた(パソコンもOSも変更)のですが、ファイルを変換(2000形式に)してから、不具合がおきています。 あるデータベースからデータを抽出する作業なのですが、 [A]・[B]二つのテーブルからテーブル[C]を作成する[テーブル作成クエリ]があり、これで作成した[C]をもとにクエリ[D]を実行し、Excelに[D]をエクスポートするという形になっています。 [テーブル作成クエリ]を手動で実行すると正常にテーブルが作成されるのですが、 マクロで実行するとうまくいきません。 マクロは メッセージの設定 ・・・いいえ クエリを開く   ・・・テーブル作成クエリを実行 ワークシート変換 ・・・[D]をExcelのワークシートにエクスポート メッセージボックス・・・"Excelへの書き出しを終了しました" となっています。 具体的には、テーブル作成クエリを実行するときには、 集計開始日と終了日をパラメータとして入力する必要があり、 作成されたテーブル[C]には入力した開始日と終了日が書き込まれます。 [D]のクエリを実行する際には[C]の開始日と終了日が抽出条件となります。 手動で[テーブル作成クエリ]を実行したときには [C]に開始日と終了日が書き込まれているのですが、 マクロで実行したときには、[C]にこの開始日と終了日が書き込まれないため、 結果的にフィールド名だけが入力されたデータの全くないExcelファイルが作成されます。 ちなみにマクロで実行する場合は、あらかじめ日付範囲を入力するフォームに開始日と終了日を入力してから実行します。 長々と書いてしまいましたが、これでおわかりいただけるでしょうか? わかりにくければまた補足いたしますので、 マクロで実行したときに正常に動作するようにするにはどうすればいいのか なにか解決策がありましたら教えてください。

  • Access2010 シート追加をしたい。

    クエリをエクセルにエクスポートしたのですが、例えば、日本一をいうワークシートに1の項目2の項目と追加シートをしていきたいのですが、どうしても上書きしますか?と保存の際に聞かれ、追加シートができません。どのようにすればできるのでしょうか? Access2010を使用しています。 宜しくお願いします。

  • 別ブックの同一ワークシートの集計

    お世話になります。 早速ですが、Excelでブックが5つ、ワークシートがそれぞれ40あるとします。 これを、別ブックにまとめたいのです。 ワークシートの構成は全て、同じです。 同一ワークシート、同一セルの集計を別のブックにまとめたいです。 伝わりますでしょうか? よろしくお願いします。

  • ACCESSのクエリーからEXCELにエクスポート時のエラー

    WINDOWS ME上でACCESS 97を使っています。 ACCESSのクエリーをEXCELにエクスポートしています。 10個のクエリーを1つのファイルにエクスポートしているのでクエリー名のシートが10個ファイルにできます。そのEXCELのファイルを更新して毎月作成していくのですが、そのうちのいくつかのシートが上書きできません。まず「同じ名前がありますが名前を変更しますか?」という旨の確認がありそのはまま「はい」にするとすんなり上書きしてくれるシートと「同じ名前のシートが存在します」とエラー出て、データーを上書きできないシートが同じファイル内にあります。シートを削除してエクスポートすればエラーはかからないのですが、集計表シートと計算式をいれているのでその都度削除して計算式を再度作成していくのも大変です。なにか思い当たることがありますか?