アクセスからVBAでエクセルに出力する方法
アクセスで下記のようなクエリの結果に対して、VBAにて会社毎のエクセルファイルを作成、
保存したいと思いますが、どのようにすればいいでしょうか?
ファイル名は、[KAISYA_MEI].xlsとし、それぞれをC:\ などに保存したい。
ちなみにExcel2003、Access2003を使用しています。
・アクセスのクエリ結果
KAISYA_ID KAISYA_MEI TANTOSYA_MEI MAIL TEL
1 ○○社 *** ***@***0*-***-****
2 △△社 *** ***@***0*-***-****
2 △△社 *** ***@***0*-***-****
3 □□社 *** ***@***0*-***-****
3 □□社 *** ***@***0*-***-****
↓
ファイル名:○○社.xls のエクセルファイル
KAISYA_ID KAISYA_MEI TANTOSYA_MEI MAIL TEL
1 ○○社 *** ***@***0*-***-****
↓
ファイル名:△△社.xlsのエクセルファイル
KAISYA_ID KAISYA_MEI TANTOSYA_MEI MAIL TEL
2 △△社 *** ***@***0*-***-****
2 △△社 *** ***@***0*-***-****
...
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
もっぱらADOを使っておりますが、本課題はDAOの方が楽だと考え、諸サイトを参考に作成してみましたが、#2のリンク先で、DAOを用いているコードとほぼ同じですね。
一時的なクエリを作成している(事前にダミーのクエリを作っておく必要なし)のが違っているのと、一時的なテーブルを作成していますが、これはdb.OpenRecordsetに直接SQLを与えてRecordsetを取得すれば必要がない様です。折角作ったので、ご参考までに載せておきます。テーブル名の記載がなかったので、「Table名」という名前のテーブルで記述しています。'DAOに参照設定要
Sub test()
Dim db As DAO.Database
Dim qdf As QueryDef
Dim RS As DAO.Recordset
Dim mySQL As String, destFileName As String
Dim i As Integer
'重複しない会社名リストを作成、IDを用いる方がベター
Set db = CurrentDb
mySQL = "SELECT DISTINCT KAISYA_MEI INTO T_KAISHA_LIST FROM Table名;"
db.Execute mySQL
'会社名リストの各レコードについて処理
Set RS = db.OpenRecordset("T_KAISHA_LIST")
RS.MoveFirst
Do Until RS.EOF
mySQL = "SELECT * FROM Table名 WHERE KAISYA_MEI='" & RS(0) & "';"
'テンポラリクエリを作成
Set qdf = db.CreateQueryDef("Q_temp", mySQL)
DoCmd.SetWarnings False
'出力先エクセルファイルがすでに存在していれば削除
destFileName = "C:\" & RS(0) & ".xls"
If Dir(destFileName) <> "" Then Kill destFileName
'Access2000用コード
DoCmd.TransferSpreadsheet acExport, 8, "Q_temp", destFileName, True, ""
db.QueryDefs.Delete "Q_temp"
DoCmd.SetWarnings True
Set qdf = Nothing
RS.MoveNext
Loop
RS.Clone
Set RS = Nothing
db.Execute "Drop Table [T_KAISHA_LIST];"
db.Close: Set db = Nothing
End Sub
No.2
- 回答日時:
最近似たような質問をみかけました。
フィールド名毎にCSV出力したいです
http://www.moug.net/faq/viewtopic.php?t=51697
上記は、CSVへの出力になりますが、
DoCmd.TransferText
部分をExcel出力用に置き換えることで、できると思います。
No.1
- 回答日時:
色んな考えがあると思うが、
まず方式の決定が必要。
(1)クエリを会社ごとに実行(いわばパラメータクエリのパラメータが会社名)
それをマクロなどで、エクスポートコマンドでエクセルのファイル・シートにエクスポートするのが早いいのでは。
ただDistinctな会社名ファイルが必要になるが。
またエクセルにはMSクエリというアクセスまがいの機能もある。
(2)または、アクセス側でクエリの結果を、会社名でソートして、レコードとして読んで、エクセルVBAでエクセルファイルのシートに書き、会社名が途切れたときに別ファイルに移るほうが良いかもしれない。
(3)一旦エクセルの、あるブックのシートに、全データをエクスポートで集め、会社名でソートして、エクセルVBAで会社ごとに別ブックに振り分ける、のも単純で良いかもしれない。
ーー
相当手馴れていないと上記をVBAでやるのは難しい(アクセスのモジュールには詳しくても、特にエクセルVBAの点)と思うが、大丈夫かな。
本質問は、丸投げ質問状態でプログラムの作成依頼のようであるが、コードは少し長くなり、引き受けるのは難しい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルでcsvファイルを開いてVBAを使いたい 7 2022/04/28 11:12
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) エクセルVBA Workbook変数に変数を使ったファイル名を格納したい 5 2023/06/13 14:46
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) エクセルVBA 既存エクセルを開きその中のシートとしてCSVファイルを開く 3 2023/05/31 13:11
- PDF エクセルのVBAでファイルをpdfで保存するとソフトによっては開けなくなる 3 2022/06/08 10:20
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
- その他(Microsoft Office) エクセルのマクロについて教えてください。 5 2023/01/21 09:39
- Excel(エクセル) CSVファイルでVBAを動かす方法 3 2023/04/04 10:22
- Excel(エクセル) エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ 6 2023/06/30 22:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
シェルコマンドの 2>&1 とはど...
-
テキストの各行に行番号をつけ...
-
VC++でUTF-8のファイルを出力し...
-
高速置換の方法
-
ファイルの文字コードをUTF-8に...
-
Acccess レポートをグループ別...
-
C言語での縦方向のファイル出力...
-
C言語での印刷方法
-
AccessVBA複数レポート条件毎に...
-
テキストファイルに改行コード...
-
CreateProcess関数と実行後の戻...
-
ファイル出力の場所を指定
-
C言語のプログラムが異常終了し...
-
VBSでEXCEL⇒CSV変換で日付の書...
-
c言語の質問です。 ランダムに4...
-
UNIX & Linux の標準出力で得た...
-
二次元配列をクリップボードに...
-
1行ずつではなくまとめてファイ...
-
OCRで起こしたテキスト文字をCS...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンド(例えばls)の出力結果...
-
VC++でUTF-8のファイルを出力し...
-
Acccess レポートをグループ別...
-
ファイル出力の場所を指定
-
ファイル形式またはファイル拡...
-
シェルコマンドの 2>&1 とはど...
-
Wordマクロで指定したフォルダ...
-
テキストファイルに改行コード...
-
fwprintf()について
-
二次元配列をクリップボードに...
-
外国語とCSVについて
-
ファイルの文字コードをUTF-8に...
-
csvファイルでの出力について
-
C言語での印刷方法
-
(VBA)書式が変更されてしまい...
-
フォルダにあるPDF情報の抽出(VBA)
-
C言語での縦方向のファイル出力...
-
CSVファイルを任意の場所に出力...
-
標準出力とファイルに効率的に...
-
CreateProcess関数と実行後の戻...
おすすめ情報