- ベストアンサー
VBAを使用して抽出結果をExcelへ出力する方法
- VBAを使用して抽出結果をExcelへ出力する方法についてご教授ください。
- 抽出結果の見出し(フィールド名)も一緒に出力する方法を教えてください。
- 毎回フィールド名を取得し、見出しとして出力する方法についてアドバイスをいただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下 ★ 部分を追加してみてどうなりますか 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
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
No1です。抜け落ちが、 For I = 0 to MyRs.Fields.Count - 1 obj.sheets(シート名).Cells(1,i+1) = MyRs.Fields(i).Name Next i ですね。セルの指定も反対になっていました。
お礼
piroin654様 いつもご回答ありがとうございます。 こちらへ質問を投稿しつつ、自力で調べてなんとか 出力できるようになりました。 方法としては、piroin654様のやり方とほぼ同じです。 ありがとうございました。
- piroin654
- ベストアンサー率75% (692/917)
クエリのフィールド名を取り出し、それを指定の 位置から順に貼り付けていくという手順になるかと。 たとえば、A1から貼り付ける場合は、 For I = 0 to MyRs.Fields.Count - 1 obj.sheets(i+1,1) = MyRs.Fields(i).Name Next i のような感じ。 obj.Worksheets(シート名).Select のあとに。
お礼
ご回答ありがとうございます。 >CopyFormRecordset のスペルは CopyFromRecordset なのでは? 記載ミスです。すみません。 色々調べてみて、理解しない状態でツギハギしながら作成しました。。 なので、おかしな部分が多々あるかと思います。 とりあえず現状はエラーは出ておりませんが、追々精査したいと 思います。ご指摘ありがとうございました。 見出しについてですが、こちらに質問を投稿しつつ自力でしらべて 出力できるようになりました(30246kikuさまの方法とほぼ同じ)。 ありがとうございました。