![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
VBAより抽出結果をExcelへ出力したいと思います。
とりあえず、抽出結果をExcelの特定の箇所へ出力することは
出来たのですが、今回は見出し(フィールド名)もあわせて出力
したいところです。
見出しの部分を出力するにはどうすればよいのでしょうか。
恐らく見出し部分と抽出結果部分はそれぞれ別々に出力
しなければならないとは思うのですが。。
なお、見出し部分は固定の文字列ではないため、毎回フィールド名を
取得し、それを見出しとして出力する必要があります。
抽出結果(集計クエリ)は、
項目 yyyy年mm月 ・・・・ yyyy年mm月
数量A 500 ・・・・ 1200
数量B 200 ・・・・ 800
というような感じで、現在は
数量A 500 ・・・・ 1200
数量B 200 ・・・・ 800
の部分だけ出力できている状況です。
Dim obj As Object
Dim MyDB As DAO.Database
Dim MyRs As DAO.Recordset
MySQL = SQL文(集計クエリ)
Set MyRs = MyDB.OpenRecordset(MySQL)
obj.Worksheets(シート名).Select
obj.Application.Cells(23, 1).CopyFormRecordset MyRs
上記でExcelへ出力してます。
ご教授の程、宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
以下 ★ 部分を追加してみてどうなりますか
Set MyRs = MyDB.OpenRecordset(MySQL)
obj.Worksheets(シート名).Select
For i = 0 To MyRs.Fields.Count - 1 ' ★
obj.Application.Cells(22, i + 1) = MyRs(i).Name ' ★
Next ' ★
obj.Application.Cells(23, 1).CopyFormRecordset MyRs
※ これ動いていました?
CopyFormRecordset のスペルは CopyFromRecordset なのでは?
(そのままにしておきますけど)
GetObject した環境ですけど
> obj.Worksheets(シート名).Select
これ、オートメーションエラーになりませんでした?
(Vista+2007 の環境ですけど)
エラーになっていなければそれはそれで・・・
obj.Worksheets(シート名).Activate
はエラーなく動くようですが・・・
※ obj.Application.Cells(23, 1) の部分は、
わざわざ obj.Application でトップに行かなくても?
Application.Cells 記述では、
アクティブブック・アクティブシートが隠れているだけで・・・
obj の正体はブックでしょうか?
(以下の様にトップに行かずに obj から辿った方が良さそうに思いますけど)
Set MyRs = MyDB.OpenRecordset(MySQL)
With obj.Worksheets(シート名)
.Activate
For i = 0 To MyRs.Fields.Count - 1 ' ★
.Cells(22, i + 1) = MyRs(i).Name ' ★
Next ' ★
.Cells(23, 1).CopyFormRecordset MyRs
End With
ご回答ありがとうございます。
>CopyFormRecordset のスペルは CopyFromRecordset なのでは?
記載ミスです。すみません。
色々調べてみて、理解しない状態でツギハギしながら作成しました。。
なので、おかしな部分が多々あるかと思います。
とりあえず現状はエラーは出ておりませんが、追々精査したいと
思います。ご指摘ありがとうございました。
見出しについてですが、こちらに質問を投稿しつつ自力でしらべて
出力できるようになりました(30246kikuさまの方法とほぼ同じ)。
ありがとうございました。
No.3
- 回答日時:
No1です。
抜け落ちが、For I = 0 to MyRs.Fields.Count - 1
obj.sheets(シート名).Cells(1,i+1) = MyRs.Fields(i).Name
Next i
ですね。セルの指定も反対になっていました。
piroin654様
いつもご回答ありがとうございます。
こちらへ質問を投稿しつつ、自力で調べてなんとか
出力できるようになりました。
方法としては、piroin654様のやり方とほぼ同じです。
ありがとうございました。
No.1
- 回答日時:
クエリのフィールド名を取り出し、それを指定の
位置から順に貼り付けていくという手順になるかと。
たとえば、A1から貼り付ける場合は、
For I = 0 to MyRs.Fields.Count - 1
obj.sheets(i+1,1) = MyRs.Fields(i).Name
Next i
のような感じ。
obj.Worksheets(シート名).Select
のあとに。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Access(アクセス) Accessのクエリの結果を、既存のエクセルに追加したい 2 2022/07/31 22:44
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
【ExcelVBA】最終行の取得で困...
-
アクセスでエクセルに出力する...
-
コンセントの電力は入力と出力...
-
cout と cerrの違い
-
プログラムについての質問です...
-
【UWSC】WEBページ中の特定文字...
-
OBS配信すると、マイクが途切れ...
-
MMDでavi出力が出来ない
-
ACCESS クエリ→フォーム...
-
携帯の液晶画像をパソコンに出...
-
海外の110Vの電気製品を日本で...
-
C++を使用してJPEG保存
-
エクセルで英字と数字を組み合...
-
Accessのテーブルからcsv出力す...
-
スマホのバッテリー消費につい...
-
makeで文字化けする。migwのmak...
-
日本語と数字の混在した項目
-
C#でアクセス権限の取得方法が...
-
ACCESS フォームで選択したレコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
printfとputcharの違いは
-
cout と cerrの違い
-
COBOLのMOVEで桁数が異なる場合
-
テキストファイルから特定の文...
-
MMDでavi出力が出来ない
-
コンセントの電力は入力と出力...
-
アクセスでエクセルに出力する...
-
OBS配信すると、マイクが途切れ...
-
coutで出力した文字を消去する...
-
CRC16計算について
-
VBA レジストリの値の読み方に...
-
ACCESS クエリ→フォーム...
-
printfの書式%.*s
-
VBAで有効数字の設定
-
VBAでテキスト出力時のスペース...
-
VBAのExecメソッドで画面を非表...
-
makeで文字化けする。migwのmak...
おすすめ情報