- ベストアンサー
AccessからExcelへの条件付エクスポート
お世話になります。 Access2000で住所録を作成し、運用しております。 普段はデータをフリガナ、会社名、市町村で検索し、表示しているのですが この時に使用した、検索条件をそのまま使って、得られたデータをExcelに エクスポートしたいのです。 (検索は、サブフォームの一覧表示部に各検索条件でフィルタをかけるという方法で行っています。) テーブル作成クエリなどいろいろ試してみたのですが、なかなかうまくいきません。 良い方法をご存知の方いらっしゃいましたら、よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
テーブル作成クエリで抽出したものをテーブルに出来たらあとはコードで出来ます。 ただし、 1.エクスポート先のEXCELファイルは既にある前提です。ここでは仮にC:\Windows\デスクトップ\Expo.xlsというファイルのDataという名前のシートににエクスポートするとします。 2.VBAでDAOを使用しますが、2000の場合標準がADOになっていますので、ビジュアルベーシックエディターのツールメニューの参照設定からDAOの一番新しそうなヴァージョンのやつにチェックマークをつけておいてください。(ADOでやればいいのでしょうが私の知識が古いのでDAOしか使えないのです。) 3.抽出して作成したテーブルの名前はT_抽出Dataと仮にしておきます。 4.どれかのフォームにコマンドボタンを作成して、そのクリック時のイベントプロシージャに次のようなコードを書きます。 Private Sub ボタン_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Dim appExcel As Object Dim Worksheets As Object Dim I As Integer '行番号 Set db = CurrentDb Set rs = CurrentDb.OpenRecordset("T_抽出Data") 'エクセルオブジェクト生成 Set appExcel = GetObject("C:\Windows\デスクトップ\Expo.xls") Set Worksheets = appExcel.Worksheets("Data") '作業中はエクセルシートを非表示 appExcel.Parent.Windows(appExcel.Name).Visible = False With Worksheets 'データ追加ループ Do Until rs.EOF = True .Cells(I, 1) = rs.Fields("フィールド名") .Cells(I, 2) = rs.Fields("フィールド名") .Cells(I, 3) = rs.Fields("フィールド名") .Cells(I, 4) = rs.Fields("フィールド名") rs.MoveNext I = I + 1 Loop End With appExcel.Parent.Windows(appExcel.Name).Visible = True 'エクセルブックを閉じる appExcel.Close True ' オブジェクトの参照を解放 Set Worksheets = Nothing Set appExcel = Nothing MsgBox ("エクセルへの出力が終了しました") End Sub 実は私も以前、教えてgooで同じような質問をして、別の人にこのコーディングを教えてもらいました。
その他の回答 (2)
- O_cyan
- ベストアンサー率59% (745/1260)
>検索条件をそのまま使って、得られたデータをExcelにエクスポートしたいのです住所録テーブルのクエリを作り同様の検索条件を入れテーブル作成クエリにして 抽出条件を入れテーブルを作成し、そのテーブルをエクスポートすれば簡単に出来 ます。 もしくは抽出条件で抽出されたレコードのレポートを作り、そのレポートをExcel に出力することもできます。 この場合は、ラベルなどがあると余計なセルが作られる場合がありますがExcel なら簡単に修正できると思います。
お礼
回答ありがとうございました。 一応回答いただいた内容は、以前にやってみたのですが 毎回違うテーブルを作成し、さらにそのテーブルについては エクスポートが完了した時点で削除したいのですが、それがうまくいきませんでした。 レポートからもExcelに出力できるとの事ですので、試してみます。 ありがとうございました。
- t_shigeno
- ベストアンサー率40% (4/10)
ふりがな、会社名、市町村を問い合わせるクエリをウイザードで作成した後、クエリを選択した状態でファイルのエクスポートを選べば、クエリが実行されてからその結果がexcelにエクスポートされますが。 vbはさっぱりわからない私が常用する方法です。
お礼
回答ありがとうございました。 今回は住所録の使用者にクエリAccessの操作を特に気にさせずに 使用してもらいたいのです。 でも自分で操作する時には、大変便利な方法ですね。 初めて知りました。 ありがとうございました。
お礼
回答ありがとうございました。 上記のコードを実際に書いて試してみます。
補足
ありがとうございます。 もう2点教えていただきたいのですが、 ・このテーブルはエクスポートが終了した時点で削除できますでしょうか? 毎回いろいろな内容でエクスポートしたいのです。 ・Excelのファイル名を任意に付けて、保存するにはやはりコモンダイアログ などの特殊なオブジェクトを用いなければできないのでしょうか? お時間ありましたら、またご回答お願いします。