• ベストアンサー

エクセルから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に集計結果が反映されます。 説明がわかりにくくてすみません。 宜しくお願いいたします。

関連する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のクエリをマクロでエクスポートしたい

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

  • マクロでエクスポート(アクセス97)

    W2000・アクセス97・エクセル2000です。 アクセスのクエリーを、マクロを使用して、新規にエクセルにエクスポートしたいです。 マクロでは、 ・変換の種類 エクスポート ・ワークシートの種類 Excel97(2000は選択の中になし) ・テーブル名 エクスポートしたいクエリーを指定 ここまでは、わかりましたが、ここまででマクロを実行すると、 ”このアクションまたはメゾットを実行するには、[file name/ファイル名]が必要です” と、表示され、エラーになります。 できましたら、この後、どのようにすればよいのか? もしくは、こういう方法で、というのがありましたら、お教えくださいませ。詳しく解説してくれている、URLのご紹介でも、かまいません。 お手数ですが、どなたか、よろしくお願い申し上げます。

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

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

  • アクセスのワークシート変換について

    アクセス97のワークシート変換について教えてください。 アクセスの中でクロス集計クエリを既存のエクセルのシートにエクスポートさせているのですが、エラーとなってしまいます。 吐き出し先のエクセルのファイルを一回一回削除して作り直している時は、エラーはでなかったのですが、エクセルシートにマクロをつけて、シートを削除しないようにしたらエラーが出るようになってしまいました。 ちなみにマクロでは、シートのデータの周りに罫線を引いています。 何か関係あるのでしょうか?? エラー内容のヘルプを呼んだのですがアクセスの処理の中でそのようなことを行った覚えはないのですが... したにエラー内容とヘルプの内容を表示しておきましたので、 何か原因がわかる方がおられましたら宜しくお願い致します。 ----------------------エラー内容---------------------------------- 実行時エラー’3010’ テーブル****は既に存在します。 ----------------------エラーのヘルプ------------------------------ このデータベースに既に存在しているテーブル名を使用してテーブルを作成しようとしたか、または既存のテーブル名に変更をしようとしました。ほかのテーブル名を使用してください。 マルチユーザー データベース環境では、テーブルを削除する場合、ほかのユーザーがそれと同じ名前のテーブルを作成した後に、削除するテーブルをロールバックしようとするとこのエラーが発生します。 削除したテーブルをロールバックするには、先にそのユーザーが新しいテーブルを削除するか、またはテーブル名を変更する必要があります。 その後、もう一度ロールバック操作を実行してください。

  • アクセスのレポートをマクロでEXCELに出力したいのですが

    マクロを作成して「ワークシートの変換」「アプリケーションの実行」でテーブルやクエリをEXCELに出力することは出来るのですが、レポートもマクロからもワークシートの変換ができるのでしょうか。記述の方法を教えてください。

  • アクセス 複数クエリ⇒エクセルの各シートに

    MS Access と MS Excelとの連携テクニックについて、 教えてください。 アクセスで、クエリA・クエリB があるとすると、 マクロ・VBAを使用して、 これらを、エクセルファイル(ファイル名は任意)の 各シートとして、Sheet1,Sheet2としてエクスポートしたいのですが、 可能でしょうか?

  • アクセス2007のエクスポートについて教えてください!

    アクセス2007の質問です。 マクロでクエリをエクセル形式で出力する方法を教えて下さい。 アクセス2003では「ワークシート変換」というアクションがあったと思います。この機能をアクセス2007で実施したいと考えています。簡単なフォームのボタンを押すと、クエリに定義した内容がデスクトップ等にエクセル形式でエクスポートするように作りたいのです。 ご存じの方どうぞよろしくお願いいたします。

  • マクロのワークシート変換でエクセルシートを取込ました。テスト用のデータ

    マクロのワークシート変換でエクセルシートを取込ました。テスト用のデータが200件でそれは上手くいったのですが、次に件数を変更(200件から1件に減らしました)してマクロを走らせると、データ1件、空白199件の結果になりました。取込むファイル名は毎回同じですが、件数は可変します。この場合はどのように設定をすればいいのかお教えいただきたく思います。件数を増やした分にはそれは取り込んだのですが、減らした分がダメなようです。

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

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