かなり困っています...
ACCESSからEXCELにデータをエクスポートしたいのですが、ACCESS側の
テーブルの中身すべてをEXCELに吐き出すのではなくて、1レコードづつ
エクスポートしたいのです。

やりたいことは...
ACCESS側のテーブルをEXCELにエクスポートする際、あらかじめ、テーブルの
一つのフィールド(部門コード)を昇順に並べておいて、エクスポートしていきながら、部門コードが変わったら、それまでの部門の金額の合計を出し、その合計もエクスポートして、次の部門に進み、最終的に金額の総合計をだそうと考えています。
この部分をVBAで組もうと考えているのですが...

エクセルのレイアウトを簡単に書くと

部門 100
     名称    金額      
     aaa  1000
     bbb 500
合計         1500
部門 200
     名称    金額      
     ccc  700
     ddd 400
合計         1100

こんな感じです
ちなみにOS WIN98 ACCESS2000,EXCEL2000です
皆様、よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

これはOLEの機能を使う必要があります。

下記のサンプルは97用のものですが、恐らく2000でも大丈夫だと思います。また全部載せようとするとかなり長文になるのである程度省略しますね。

Dim XL As Object 'OLE時のExcelアプリ自体
Dim WB As Object 'OLE時のExcelのワークブック
Dim WS As Object 'OLE時のExcelのワークシート
Dim WC As Object 'OLE時のExcelのセル
Dim WR As Object 'OLE時のExcelのセル範囲
Dim lngCol As Long '列
Dim lngRow As Long '行
Dim rsBumon As Recordset
Dim BCD As Long '部門コード比較用

Set XL = CreateObject("Excel.Application")
XL.Application.Visible = True
XL.Application.SheetsInNewWorkbook = 1
XL.Workbooks.Add
XL.ActiveWorkbook.SaveAs FileName:="c:\○○.XLS"
XL.Application.ReferenceStyle = -4150
Set WB = XL.ActiveWorkbook
Set WS = WB.ActiveSheet

Set rsBumon=CurrentDB.OpenRecordset("SQL文又はクエリー名",dbOpenSnapShot)

Do Until rsBumon.EOF
If BCD<>rsBumon("部門") Then
If BCD<>0 Then
'合計の式
#Sum関数内の範囲はどこかでスタート・エンドを覚えておいて、式の文字列を作成して下さい。*行は1行書き込む毎にカウントアップして下さい。#
    WS.Cells(*行,*カラム)="Sum(R1C:R3C)"
End If
   BCD=rsBumon("部門")
WS.Celss(*行,1)=rsBumon("部門")
End If
WS.Cells(*行,1)=rsBumon("名称")
WS.Cells(*行,2)rsBumon("金額")
rsBumon.MoveNext
Loop
rsBumon.Close
'総合計の書き込み
#自分の場合、総合計用の式は、部門毎の小計を出力した行を配列などで保存しておいて、その配列から下記の式を生成しています。#
WS.Cells(*行,*カラム)="=R5C+R8C+R15C"


'保存して終了
XL.Application.ActiveWorkbook.Save
XL.Application.Quit
Set WS = Nothing
Set WB = Nothing
Set XL = Nothing



もっと単純にするのでしたら、同じようなイメージのレポートを作成して(部門でグループ化して)そのレポートを「Excel形式で出力」すれば、同じようなイメージになると思うのですが。
    • good
    • 0

VBAで出来ると思いますが、全部クエリで処理を行ってデータのエクスポート機能で書き出したほうが楽じゃないですか。


もしくは、ピボットテーブル使うのが一番簡単ですね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QAccessのテーブルを既存のExcelファイルへエクスポートしたいんですが

Win2000,Access2000,Excel2000を使用しています。
アクセスのテーブルを既存のエクセルファイルへエクスポートするマクロを組みましたが実行すると、
 「外部テーブルのフォーマットが正しくありません。」
というメッセージが出ます。
ヘルプを見ると、
 「テーブルの形式がリンク後に変更されています。
  テーブルをリンクし直してから、もう一度実行してください。」
という表示が出ますが、なんのことやらちんぷんかんぷんです。
そもそもテーブルのリンクとはどういう意味でしょうか?
別のエクセルファイルへエクスポートしてみましたが、それは問題なくできたので、エクスポートさせようとしているエクセルファイルの方に問題があるのでしょうか?
どなたかお教えください。

Aベストアンサー

Microsoft Excel 8-9だったら、ファイルごと書き換えてしまうはずだなぁ。
おかしいなぁ。
ファイルに書き込み保護がかかっているとか、ファイルが壊れているとか、そういう原因も考えられますが、通常は、エクスポートのときにその旨のメッセージが出ます。
リンクがかかってそこでエラーが起きているのだから、Accessのモジュールが壊れているのかもしれません。
申し訳ありませんが、私にはわかりません。

QAccess テーブルを分割してエクスポートしたい

Access 2000のテーブルを指定した行数分に分割して、csv形式にエクスポートしたいと思っています。
例えば、100万件のデータを20万件×5ファイル、というイメージです(対象件数/分割件数ともに一定ではありません)

自分で考えてみたのですが、上位20万件をクエリ→削除クエリ→上位20万件をクエリ→削除クエリ・・・という
方法しか思い浮かばず、もっと簡単に出来る方法をお教えいただければと思います。
よろしくお願いします。

Aベストアンサー

#3です。

>考え方は同じでしょうか。
同じですね。

では、ループで読みながらコーディングでcsvに吐き出す
というのはどうでしょう?
カウンターで20万件ごとにファイル名を変えれば
良いかと思います。

あと別のmdbからリンクはって、ループで読みながら、TEBLEを20万件毎に作るとか。

Q【Access VBA】クエリ・テーブルのエクスポートについて

MSOffice2003を使用しています。

マクロにてクエリやテーブルをエクスポートする際、
-------------------------------------------
アクション名:ワークシート変換
変換の種類:エクスポート
ワークシートの種類:Microsoft Excel 3
テーブル名:クエリQ(クエリ及びテーブル名)
ファイル名:C:\XXXX.XLS
-------------------------------------------
としています。

今回、ファイル名(エクスポート先のファイル)に変数を使用したく、
VBAでのコーディングが必要と考えています。
ファイル名は、XXXX_yyyymmdd.XLS(yyyymmddは処理日付)にしたいのです。

この場合、どうコーディングすればよろしいでしょうか?

Aベストアンサー

マクロを選択してから、メニューで

ツール - マクロ - マクロを Visual Basic に変換

後は、ファイル名のところを、変更するだけですけど・・・
記載している内容だと、マクロで実現可能ではないですか?

Qaccess2007でテーブルを他のaccess2007のテーブルにエキスポートしたい

windows7のAccess2007でテーブルを他のAccess2007のテーブルにエキス
ポートしたい。これは、マクロで出来るのでしょうか。

マクロでやるとすれば、アクションは何を選べば良いのでしょうか。宜
しく回答願います。

Aベストアンサー

「データベース変換」で。

「全てのアクションを表示」をオンにしておくことをお忘れなく。

TransferDatabase マクロ アクション
https://support.office.com/ja-jp/article/TransferDatabase-%E3%83%9E%E3%82%AF%E3%83%AD-%E3%82%A2%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3-f098d760-733b-45ed-b1bf-b4e2eff996ee

QAccessのテーブル、クエリをCSV形式でエクスポートしたい

マクロを使ってAccessのテーブルやクエリを、カンマ区切のCSV形式でマクロを使ってエクスポートしたいのですが、それらしいものが見つかりません。

どのようにするのでしょうか?


環境:Access 2003 、WindowsXP

Aベストアンサー

マクロの「アクション」で「テキスト変換」を指定し、画面左下に表示される
『変換の種類』引数に「区切り記号付きエクスポート」を指定すればOKです。
 *VBAの場合は「TransferText」になります。

その他の引数については事例毎に個別になりますので、詳細はヘルプを
参照して下さい。
(マクロ・VBAとも、「TransferText」で検索を掛ければ見られると思います;
 Access2000で確認)


このカテゴリの人気Q&Aランキング

おすすめ情報