• 締切済み

Access 抽出したフォームをファイル出力

いつもお世話になっています。 フォームにボタンを作成して、指定したフォームをExcelファイルで保存しています。 これまではクエリに直接抽出条件を入力し、それをフォームにしていました。 条件が増えたので、読み込みのイベントで抽出(入社年度、部署名)を指定して フォームで抽出しています。そこからのレポートもフォームも抽出結果どおりです。 ただすべての内容がExcelファイルに出力されてしまいます。 抽出した内容だけをExcelファイルに出力するにはどうしたらいいでしょうか。 Private Sub Eccelで保存_Click() DoCmd.OutputTo acOutputForm, "活動記録", acSpreadsheetTypeExcel9 End Sub お力添えをお願いいたします。

みんなの回答

回答No.2

情報があいまいな部分があるので確認させてください。 > Private Sub to11_Click() > DoCmd.OpenForm "F_支所A" > Set Forms!F_支所1.Recordset = Me.Recordset この F_支所A と F_支所1 は別のフォームですか。 それとも、実際は同じフォームで、ここに書き写すとき書き間違えたのですか。 > DoCmd.close acForm, "F_支所一覧", acSaveYes F_支所一覧 というのは、「to11」ボタンの配置してあるフォームですか。 > Excelに出力したい情報はデータシート形式で、支所のフォームに > F_活動記録 サブフォームとして埋め込んでいます。 「支所のフォーム」とは「F_支所A」のことですか。 > Private Sub Eccelで保存_Click() > DoCmd.OutputTo acOutputForm, "F_活動記録", acSpreadsheetTypeExcel9 > End Sub 「Eccelで保存」ボタンは、F_支所A に配置してあるのですか。 > 教えていただいた「RecordSource に抽出条件を設定したSQL」は > Q_活動記録のレコードソースに記述するのでしょうか。 これは最初の質問の「読み込みのイベントで抽出」というから、読み込み時イベントで自分自身のFilterプロパティに抽出条件を設定するということを推測して回答したことですが、実際はそうではないようなので無視してください。 とりあえず、上記の質問に回答してください。 下手な推測でまた、間違った回答をしてしまっては無駄骨ですので。

suzupen
質問者

お礼

お世話になっています。 あれこれ自分なりに操作してみたのですが、印刷用のフォームを作成、非表示で開き、 それをExcelへ出力したところ、カレントレコードだけが出力できました。 操作する人にはサブフォームが出力されているように見えます Private Sub Eccelで保存_Click() DoCmd.OpenForm "F_活動記録印刷", acFormDS, , "[入社年度] =" & Me.入社年度 & " And [部署名 ] =" & Me.部署名 , , acHidden DoCmd.OutputTo acOutputForm, "F_活動記録", acSpreadsheetTypeExcel9 DoCmd.close acForm, "活動記録印刷" End Sub。 もっとスマートに正しい解決方法があるのだと思うのですが、期限が迫っているので今回はこれで回避します。 このたびは、アドバイスをいただきまことにありがとうございました。 また機会がありましたらよろしくお願いいたします。

suzupen
質問者

補足

回答いただきありがとうございます。 記載ミスがあり、情報があいまいなままで申し訳ありません。 どうぞよろしくお願いいたします。 >>Private Sub to11_Click() >> DoCmd.OpenForm "F_支所A" >> Set Forms!F_支所1.Recordset = Me.Recordset >この F_支所A と F_支所1 は別のフォームですか。 >それとも、実際は同じフォームで、ここに書き写すとき書き間違えたのですか。 申し訳ありません。記載間違いです。 F_支所A と F_支所1 は同じフォームです。 どちらも F_支所1 フォームです。 >> DoCmd.close acForm, "F_支所一覧", acSaveYes >F_支所一覧 というのは、「to11」ボタンの配置してあるフォームですか。 そうです。to11 to12 ・・・と支所ごとに登録したボタンを並べています。 > Excelに出力したい情報はデータシート形式で、支所のフォームに > F_活動記録 サブフォームとして埋め込んでいます。 >「支所のフォーム」とは「F_支所A」のことですか。 そうです。 F_支所1 フォームです。 >> Private Sub Eccelで保存_Click() >> DoCmd.OutputTo acOutputForm, "F_活動記録", acSpreadsheetTypeExcel9 >> End Sub >「Eccelで保存」ボタンは、F_支所A に配置してあるのですか。 そうです。 F_支所1 フォームです。

回答No.1

> 条件が増えたので、読み込みのイベントで抽出(入社年度、部署名)を指定して > フォームで抽出しています。そこからのレポートもフォームも抽出結果どおりです。 具体的にどのようにしてますか。VBAでFilterプロパティに抽出条件を設定しているのでしょうか。 もし、そうなら、Filterプロパティで抽出するのではなく、RecordSource に抽出条件を設定したSQLを設定すればどうでしょうか。 現状が、 Me.Filter = 抽出条件式 Me.FilterOn = True としているなら、 Me.RecordSource = "SELECT * FROM テーブル名 WHERE " & 抽出条件式 もし、外しているのなら、現状のコードなりマクロなりをご提示ください。

suzupen
質問者

補足

早々にお返事ありがとうございます。 はじめに選択クエリ Q_活動記録 を作成しています。 抽出条件は、何もつけていません。 フォームに支所名のついたボタンを並べて、クリックすると下記のフィルタがかかり、 目的の支所の情報が見れるフォームが開く仕組みです。 Private Sub to11_Click() DoCmd.ApplyFilter , "([入社年度] = 20 And [部署名] = 1 )" DoCmd.OpenForm "F_支所A" Set Forms!F_支所1.Recordset = Me.Recordset DoCmd.close acForm, "F_支所一覧", acSaveYes End Sub Excelに出力したい情報はデータシート形式で、支所のフォームに F_活動記録 サブフォームとして埋め込んでいます。 メインのフォームとは、リンク子フィールド、リンク親フィールドを 入社年度;部署名 でリンクしています。 そのサブフォームを抽出結果はそのままにExcelに出力したいのです。 そこで下記のクリックイベントでは、すべてのデータが出力されてしまいます。 Private Sub Eccelで保存_Click() DoCmd.OutputTo acOutputForm, "F_活動記録", acSpreadsheetTypeExcel9 End Sub (質問の部分ではF_活動記録のF_が抜けていました。申し訳ありません) 教えていただいた「RecordSource に抽出条件を設定したSQL」は Q_活動記録のレコードソースに記述するのでしょうか。 Accessは継ぎ接ぎ程度の知識しかないので、お恥ずかしいのですが もう少し具体的に教えてください。 よろしくお願いいたします。

関連するQ&A

  • Access csvファイルで出力したい

    いつもお世話になっています。 フォームにボタンを作成して、指定したフォームをExcelファイルで保存しています。 これをcsvファイルで出力に変更したいのです。(フルパスではない方法) Private Sub Eccelで保存_Click() DoCmd.OutputTo acOutputForm, "活動記録", acSpreadsheetTypeExcel9 End Sub お力添えをお願いいたします。

  • 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出力について

    お世話になります。 教えてください。サブフォームを含んだフォームがあって、 このフォームで絞り込んだデータ(メインフォームとサブフォームの データ)をエクセルに出力する際、サブフォームのデータが出力されません。 ちなみにメインフォームには工事のデータ、サブフォームには その工事で使用した部品とその金額が入っています。 メインフォームのデータは『DoCmd.OutputTo acOutputForm』で すんなりと出力できたのですがサブフォームのデータが出力されません。 合計金額だけでも出力しようとメインフォームにテキストボックスを置き、 そのコントロールソースに『=サブフォームの合計金額』として表示できる ようにし、エクセルに出力しようとしましたがデータは出力できませんでした。 文章がわかりにくくて申し訳ありませんが、どなたかよい方法をご存知でしたら 紹介願えませんでしょうか。 よろしくお願い致します。

  • ACCESSデータをEXCELに出力したい。

    ACCESSでフィルタを使って複数項目(空欄の箇所がある場合もあり)を抽出したデータ(サブフォームに表示)だけをEXCELに出力したいのですが、下記のコードではすべてのデータが出力されてしまいます。 ------------------------------- Private Sub 出力_Click() DoCmd.OutputTo acOutputQuery, "Q_出力", acFormatXLS End Sub ------------------------------- 情報が少なかったらすみません。 よろしくお願いいたします。

  • EXCELファイルからACCESSへインポート

    質問させていただきます。 ACCESSのフォームから、EXCELファイルを選択してEXCELの内容を、 テーブルにインポートさせたいのですが。以下の方法で行って いるのですが、テーブルに反映されません。 Private Sub cmd_Import_Click() Dim InitialFileName As String Dim varTitle As Variant Dim FileName As String InitialFileName = "hoge.xls" varTitle = "ファイルを開く" FileName = GETHOGEOPEN(varTitle, InitialFileName) DoCmd.SetWarnings False DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "T_HOGE", FileName, True DoCmd.SetWarnings True MsgBox "完了しました" End Sub ACCESS → ACCESS2003 SP3 EXCEL →EXCEL2003 SP3 よく見ると、すでにEXCELのバージョン指定が違う(汗) これが原因かも・・・・(汗) わかる方がいらっしゃったら教えてください。

  • アクセスでOutputTOを使用してエクセルへ

    アクセスでOutputTo acOutputFormを使用して、エクセルへデータをエクスポートしています。 フォームには、コンボボックス1、コンボボックス2、テキストボックス1を用意し、 データを抽出し、フォーム上に表示されたデータのみをエクスポートしています。 エクスポートされたエクセルデータを確認すると、コンボボックス1、コンボボックス2、 テキストボックス1も、エクセルデータの項目としてエクスポートされてしまいます。 このコンボボックス1、コンボボックス2、テキストボックス1をエクセルに エクスポートしなようにする方法はありますか? 下記でエクスポートしています。 DoCmd.OutputTo acOutputForm, "F_設備", , "\\***\***\***\" & "book1.xls", True

  • Access フォーム上でクエリによるcsv出力

    Accessで障害履歴を管理するDBを作っています ・障害内容をフォームより起票して障害履歴テーブルに保存される ・月に一度、前月分の障害をクエリでcsvに抽出 ・抽出する際に発生日時のフィールドを[Like "2021/04/**"]の 抽出条件を入れて指定した月をクエリで抽出しています。 今回悩んでいるところは、毎回クエリのデザインビューを開き 発生日時の抽出条件に[Like "2021/04/**"]を入れて抽出ではなく フォーム上で2021年○月と指定して抽出というボタンを実行すると 自動でcsv出力まで出来るのを目指しています。 ※csv出力する際に指定したファイル名が自動でつけばなお良い イメージとしてはフォーム内にエクスポートというボタンを作り、 それを押すと障害発生日時の○年○月を指定するポップアップが表示され、日付指定して実行すると○月分の障害履歴が指定したファイル名でcsvにエクスポートされる。 またはフォーム内に障害発生日時の○年○月を指定するテキストボックスがあり、日付指定後にエクスポートのボタンを押すと同様にcsv出力されるのを作りたいのですが可能でしょうか?

  • ACCESS 2000でのExcel出力

    ACCESS 2000でExcel出力時に下記のソースで出力しています。 出力先をユーザーに選択させたい(Windowsでファイル保存時に出てくるやつみたいに)のですが、どのような方法がありますか? Private Sub 集計結果_Click() DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, _ "クエリA", "c:\集計.xls" End Sub 宜しくお願いします。

  • AccessからExcelへエクスポートするVBA

    いつもお世話になっております。 AccessのクエリからデータをExcelにエクスポートします。 形式はMicrosoft Excel97-2003です。 フォーム"F_全データ"にボタンを付けて、クリックするとファイル名を自分で付けて保存する。というVBAを作成したいです。 1つ目のVBAは DoCmd.OutputTo acForm, "F6_全データ", "MicrosoftExcelBiff8(*.xls)", "", False, "", 0 これだと、ファイルの種類が、Microsoft Excel5-7になってしまい困ります。 この形式になってしまうと、Excelデータを開くと、文字数が多いところが保存されていません。これだと困ります。 2つ目が DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "F_全データ", "○○○.xls" こちらですと、ファイルの種類は97-2003になりまして、問題はないのですが、ファイル名は自分で指定したいのです。 ご指導よろしくお願いします。

  • Excelのデータをインポートする方法

    いつもお世話になっています。 現在、以下のような仕組みでExcelにエクスポートしています。 コマンドボタンをクリック→出力用のクエリテーブルが非表示で開き抽出条件がかかる→ Excelにエクスポートする→非表示のフォームが閉じる Private Sub send_ex_shido_Click() DoCmd.OpenForm "会員名簿", acFormDS, , "[年度] =" & Me.年度 & " And [クラス] =" & Me.クラス, , acHidden DoCmd.OutputTo acOutputForm, "会員名簿", acOutputXls DoCmd.close acForm, "会員名簿" End If End Sub これを、コマンドボタンをクリックすると、反対にエクスポートしたファイルに情報を追加したものを、 インポートしたいのです。 もしかしたら、ツールコマンドの「外部データの取り込み」からExcelファイルをクエリテーブルに入れる方法があるかも、、、と思いましたが、手詰まりの状態です。 どうかお力添えをお願いいたします。