• ベストアンサー

accessで作成したクエリーをエクセルに出力する時の問題

アクセスで作成したクエリーをエクセルに出力します。フォームに作成したコマンドボタンを押すと、マクロが起動して、マクロで指定してあるフォルダにエクセルが出力されます。出力先にすでに同名のブックがある場合、「すでファイルが存在しています。上書きしますか。」と、いうメッセージが表示されますが、このメッセージを表示せずに無条件ですでに存在するファイルに上書きをしたいと思います。 メッセージを表示しない方法はありますか。一番いいのは,マクロ内でこのメッセージの非表示を指定できるのがいいのですが。 よろしくお願いします。

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

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

> フォームに作成したコマンドボタンを押すと、・・・ コマンドボタンを使っているのでしたら、VBAで、直接コマンドボタンの クリック時イベントに下記のように記述します。 (ご存知とは、思いますが、一応手順を書いておきます。) フォームをデザインモードで開き、そのコマンドボタンをダブルクリックして、 コードを指定し、「イベント」タブで「クリック時」をポイントし、 右端の...をクリックします。 コードの一番上と下のコードが、表示されますので、その中に書き込みます。 Private Sub コマンド1_Click()   DoCmd.SetWarnings False   DoCmd.OutputTo acQuery, "クエリ1", "MicrosoftExcel(*.xls)", _     "c:\test\クエりー1.xls", False, ""   DoCmd.SetWarnings True End Sub たぶん、これでメッセージは、出ないと思います。 あとは、マクロの場合ですと、クエリーをテーブルに書き出して、 アクションに「ワークシート変換」で「エクスポート」する方法でしょうね。 メッセージは、出なくて、結果は、同じです。 

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

No.1です。もうちょっと詳しく書くと、マクロの場合は、 アクションを「メッセージの設定」で「メッセージの表示」を「いいえ」に します。 必要なくなりましたら、必ず「はい」に戻しておきましょう。 VBAでは、   DoCmd.SetWarnings False   'ここにメッセージが出るコードを記述   DoCmd.SetWarnings True

s_child
質問者

補足

メッセージの設定でメッセージの表示を「いいえ」にしましたが、 上書き保存をきいてくるメッセージは表示されます。 メッセージの設定はマクロのどこにすればいいのでしょうか。 私は、同じマクロ内のエクセルへ出力する前に設定しました。 設定場所が悪いのでしょうか。

noname#7099
noname#7099
回答No.2

マクロでしたら、エクセル出力のマクロの下に、キー送信アクションを追加してください。キー操作の欄に  {enter} とするとキーボードでエンターキーを1回押したことになります。 ファイルが存在しなくて、メッセージが表示されない場合でも、次にエンターキーを操作したことになりますので、ご注意ください。必ずファイルが存在する場合は使えますが、ファイルがあったりなかったりするような場合は使わないほうがいいと思います。 モジュールでしたら DoCmd.OutputTo acOutputTable, "テーブル1", acFormatXLS, "c:\test\test.xls", True, "" とすれば、テーブル1をc:\test\test.xlsというファイルにメッセージなしで出力しますが、c:\test\test.xlsを開いてしまいます。 どちらかご都合のよろしいものがあればよいのですが。

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.1

"SetWarnings/メッセージの設定" アクション で出来ると思います。

関連するQ&A

  • AccessからのExcel出力

    お世話になります。 Access2010 フォームに「Excel出力」ボタンを設置し、押すとクエリの内容を Excelに出力するツールを作成しました。 具体的には、ボタンを押すと出力先を指定するダイアログを表示し、 フォルダが選択されたら、そのパスを取得し、そこにExcelファイルが 作成されます。 出力されるファイル名は「情報_yyyymmdd.xlsx」です。 DoCmd.TransferSpreadsheet acExport, 10, "Q_Dummy", strFolder & "情報_" & Format(Date, "yyyymmdd") & ".xlsx", True, "" strFolderは、ダイアログで選択されたパス Q_Dummyは出力するクエリ <質問1> 上記にて問題無く出力はされますが、例えば今日だと「情報_20160704.xlsx」 というファイルをデスクトップに作成したとします。 で、再度デスクトップに作成しようとした場合「既に同じ名前のファイルが あります、上書きしますか?」というメッセージは表示されず そのまま上書きされてしまいます。 DoCmd.TransferSpreadsheet acExportを実行する前に、事前に出力先の パスに同ファイル名が存在していないかチェックした上で、手動で 「上書きしますか?」のメッセージを表示させる必要があるのでしょうか。 <質問2> 「そのまま上書きされてしまいます。」と書きましたが、実際には マージされてしまうようです。 例えば、2レコード抽出されたクエリの内容を出力し、そのExcelを開いて 表外に「ああああ」と入力します。 次に条件を変えて3レコード抽出されたクエリの内容を出力します。 そうすると、ちゃんと3レコードの内容が出力されていますが 表外に入力した「ああああ」は残ってます。 ※画像1 また、表内のセルに「AAAA」と入力し、そのセルに色付けした状態で、 再度出力すると、「AAAA」は上書きされますが、色は付いたままです。 ※画像2 という結果から、  ・ファイル自体が作成し直される訳ではない。  ・上書きされる部分はあくまでもクエリの内容(表内)の部分だけ   であり、書式や表外の部分については上書きされない。 ということになるかと思います。 その認識で問題ありませんでしょうか。 上書きされないように(そもそも同じファイル名にならないように) ファイル名を「情報_yyyymmdd_hhmmss.xlsx」にすればいいかとは 思うのですが。。 ご教示の程、宜しくお願い致します。

  • Access2000クエリーをExcelに出力するとExcel95で作ってしまいます。

     Access2000でクエリーをExcelに出力するとファイルをExcel95バージョンで作ってしまいます。Excel2000で作ったファイルを開くとき、その出力されたファイルのデータを参照するように組むと、「ファイルが読み込めません」とメッセージが出て参照してくれません。 Access2000でクエリーをExcel2000で出力させる方法はあるのでしょうか?

  • ACCESS Excelの出力について

    stressmanといいます。 実は、ACCESSでクエリをExcelへ出力をしたいのですが、 ここで、既存のExcelのファイルのセルを指定して出力 というこはできるのでしょうか? 選択クエリで必要な情報を抜き出し、そのクエリを 「営業報告書.xls」というファイルのあらかじめ記載して ある「顧客名」「住所」のセルに格納していきたいのです。 マクロで「コマンド実行」-「Excel出力」を使って みたのですが、新しくファイルを開き、クエリのデザイン そのままで出力されます。 宜しくお願いします。

  • Access2010クエリーのExcel出力書式

    Access2010で作成したクエリーをそのままの書式でEXCELに出力するVBAを組みたいと思っています。VBAは下記のとおり書いてみましたが、クエリーで表示される書式(ある列はカンマ、ある列は日付形式など)をそのまま移すことができません。このVBAをどのように変更したら、クエリーそのままの書式で出力できますでしょうか? '''''QUERYを指定 Dim varQE1 As Variant varQE1 = "QE1_List" 'QUERY名 '''''日付つきファイル名を指定 Dim varExcelPass As Variant varExcelPass = "C:\List_" & Format(Now(), "yyyymmdd") & ".xls" '''''ファイル変換出力 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, varQE1, varExcelPass, True

  • AccessのフォームをExcelに出力

    いつもお世話になっております。 現在、Access2003でDBを作成中です。 "テーブル1"をパラメータクエリで抽出します。"クエリ1"。 そのクエリを基にフォームを作成しています。"フォーム1"。これは抽出して印刷したり、Excelに出力するために作成しました。レポートではなく、フォームにした理由は、コマンドボタン等を配置できることからです。 Excelに出力する際のVBAでつまづいてしまいました。 DoCmd.OutputTo acOutputForm, "フォーム1", acSpreadsheetTypeExcel9 これで問題なく出力できています。が、、、 Access2007の一部のPCでこれを実行するとエラーが出ます。 原因は"OutputTo"が含まれているとエラーになるようです。 ちなみにエラーは「現在出力しようとしているオブジェクトの形式は無効です。」 「2007 Office スイート Service Pack 2」こちらをインストールすると良いそうなのですが、だめでした。 WindowsXP、Office2007はこのVBAだとエラーになります。 WindowsVista、Office2007は正常に使えました。 PCの何か設定?と考えたりもしたのですが、はっきりとした原因がわからないのでは、他の人にDBを使っていただけないので、エラーにならないVBAでいきたいです。 もうひとつ、 mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "フォーム1", mFileName こちらのVBAはクエリの出力だとうまくいくのですが、フォームだとだめでした。 クエリから抽出して保存すれば良いのですが、理想はこの形です。 1.フォーム1を開くと「担当者を入力」とパラメータクエリが働き、抽出結果をフォーム1に表示される。 2.[出力]ボタンを押すと、ダイアログボックスが開いてファイル名を指定して保存する。または、ダイアログボックスが開かなくても名前を指定できれば良いです。最悪、指定できなくても良いですが、原因となる、"OutputTo"を避けたVBAでいきたい。 3.mFileName = InputBox("ファイル名を入力してください。") DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "クエリ1", mFileName これだと、1.でパラメータクエリで抽出結果をフォームに表示させて、2.で[出力]ボタンを押すと、また、パラメータクエリで抽出しなければならなくなるのでできれば避けたいです。 こちらの条件でご教授お願い致します。 また、WindowsXP、Office2007でエラーが出ましたので、これを解決する方法でも良いです。 よろしくお願い致します。

  • AccessからExcelにエクスポートする時に常に上書きしたい

    AccessのテーブルをExcelへ出力する際に、常に同じファイル名で保存する場合、 2回目以降は、上書きするかどうかを尋ねるメッセージが表示されます。 「常に上書きする」と決まっているので、メッセージを表示させたくないのですが、どうしたらいいのでしょうか。 現在、マクロで作成しており、出力の前後に「メッセージの設定」を入れてみたのですが、ダメでした。 VBAなら可能でしょうか?よろしくお願いします。

  • ACCESSのクエリーからエクセル出力

    ACCESSのクエリーからエクセル出力する方法を探しています。 フォームのボタン押下⇒保存先選択画面表示⇒エクセル出力 という手順を考えていますが、 テーブルをそのまま(保存先も直書き)出力するサンプルは見つかるのですが上記のようなものは見つけられません。 どこかいいサイト、もしくはサンプルなどありませんでしょうか?

  • Access Excel出力する保存先を指定したいのですが?

    Access初心者です。2003です。 7000ほどのデータを70ほどの抽出条件ごとにエクセルにしています。 抽出条件毎にクエリを複数作成し、各クエリが抽出したデータをマクロでエクセルに出力させています。このマクロをクエリ分作成し、別のマクロでその複数マクロをいっせいに実行させています。マクロには「コマンドの実行」で「Excelに出力」を使用しています。このアクションを使用するとマイドキュメントにエクセルが保存されてしまいます。(たまにディスクトップになります。) この保存先を指定したいのです。ダイアログではなく、設定した任意のフォルダにいっせいに収まるようにです。 「出力」アクションだと保存先のダイアログが出てくれますが、クエリの数が多いので手作業が増えてしまいます。「コマンドの実行」のExcel出力ですと手作業が無いのですが、マイドキュメントに保存されてしまいます。 私がツールを作成し、Accessを知らない人間がフォーム画面で使用するのでなるべく自動化したいと考えています。 へたくそな文ですが、どなたか助けてください。

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

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

  • <<ACCESS2000>>クエリの結果をエクセルで表示させることはできますか?

    宜しくお願いします。 アクセスのクエリで実行した内容を フォームではなく、エクセルで表示させたいのですが、方法はありますか? フォームのように開くとマクロなどでクエリが 勝手に動き、結果がエクセルで表示される様にしたいのですが。

専門家に質問してみよう