• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access 抽出結果をExcelへ出力)

VBAを使用して抽出結果をExcelへ出力する方法

このQ&Aのポイント
  • VBAを使用して抽出結果をExcelへ出力する方法についてご教授ください。
  • 抽出結果の見出し(フィールド名)も一緒に出力する方法を教えてください。
  • 毎回フィールド名を取得し、見出しとして出力する方法についてアドバイスをいただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • 30246kiku
  • ベストアンサー率73% (370/504)
回答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

naoto0216
質問者

お礼

ご回答ありがとうございます。 >CopyFormRecordset のスペルは CopyFromRecordset なのでは? 記載ミスです。すみません。 色々調べてみて、理解しない状態でツギハギしながら作成しました。。 なので、おかしな部分が多々あるかと思います。 とりあえず現状はエラーは出ておりませんが、追々精査したいと 思います。ご指摘ありがとうございました。 見出しについてですが、こちらに質問を投稿しつつ自力でしらべて 出力できるようになりました(30246kikuさまの方法とほぼ同じ)。 ありがとうございました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No1です。抜け落ちが、 For I = 0 to MyRs.Fields.Count - 1 obj.sheets(シート名).Cells(1,i+1) = MyRs.Fields(i).Name Next i ですね。セルの指定も反対になっていました。

naoto0216
質問者

お礼

piroin654様 いつもご回答ありがとうございます。 こちらへ質問を投稿しつつ、自力で調べてなんとか 出力できるようになりました。 方法としては、piroin654様のやり方とほぼ同じです。 ありがとうございました。

  • piroin654
  • ベストアンサー率75% (692/917)
回答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