こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

【Access VBA クエリ結果をExcelに貼り付けたい】

【Access VBA クエリ結果をExcelに貼り付けたい】

以下のコマンドを書いて、
クエリ結果をExcelに貼りつけました。

この記述ですと、クエリのヘッダー部が貼りつけされません。
ヘッダー部も合わせて貼りつけるには、どのように記述すればよろしいでしょうか?

以下ソース - - - - - - - - - - - - - - - -

Private Sub XLS_Paste_1()

On Error GoTo Err_XLS_Paste_1

Dim DB As DAO.Database
Dim RS As DAO.Recordset
Dim objApp As Object

Dim ExeName As String
Dim SheetName As String

ExeName = "\\FileServer01\Share\Excel_Base.xls"
SheetName = "Report"

Set DB = CurrentDb
Set RS = DB.OpenRecordset("qry_sel_DAILY_DATA")

On Error Resume Next

Set objApp = CreateObject("Excel.Application") '変数にExcelオブジェクトを格納

objApp.Visible = True 'Excelを画面に表示させる

With OBJEXE
objApp.Workbooks.Open (ExeName)
With objApp.Sheets(SheetName)

.Range("B53:G83").ClearContents '転記エリアのクリア
.Cells(53, 2).CopyFromRecordset RS 'B53基準で出力

End With

objApp.Visible = True
objApp.DisplayAlerts = False
objApp.Save
objApp.DisplayAlerts = True
objApp.Quit
Set objApp = Nothing

Set RS = Nothing
Set DB = Nothing
Set OBJEXE = Nothing

Exit Sub

End With

Exit_XLS_Paste_1:
Exit Sub

Err_XLS_Paste_1:
MsgBox Err.Description
Resume Exit_XLS_Paste_1

End Sub

投稿日時 - 2010-09-22 16:25:44

QNo.6200137

すぐに回答ほしいです

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

回答は出てますが。。。
 
 
---------------------------------------------------- 
.Range("B53:G83").ClearContents '転記エリアのクリア
 
'●B53~??53行目見出し
 
For i = 0 To RS.Fields.Count - 1
  .Cells(53, i + 2).Value = RS.Fields(i).Name
Next i
 
'●データはB54基準で出力
  
.Cells(54, 2).CopyFromRecordset RS
 
---------------------------------------------

要するにヘッダーは別に挿入するということです。
以上です。

投稿日時 - 2010-09-22 20:15:09

お礼

なるほど、理解できました。

ありがとうございました!

※休みを挟みお礼が遅れてしまったこと、お詫び申し上げます

投稿日時 - 2010-09-24 11:16:20

ANo.3

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

すごいですねDAOを使ったコーディング出来ません
早く理解したいと思っていますので的外れの答えになっているかもしれません
そのときはお許し下さい

Dim ExeName As String
ExeName = "\\FileServer01\Share\Excel_Base.xls"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel5, クエリまたはテーブル名, ExeName

これでクエリまたはテーブル名のワークシートにヘッダー部も含めてエクスポートされます。
後はエクセル側で別のワークシートに式でコピーしています。

投稿日時 - 2010-09-22 19:14:49

お礼

いえいえ、私も根本的な理解には至らず
ネットで調べたものを流用している段階です。

実は今まではエクスポートで対応していました。
私の環境だけなのかもしれないのですが、実に不安定なんです。
(何かの拍子で、シート名が"~1"に変わってエクスポートされる。
 その何かがわからず、、、。)
また、エクセル側で縦横に計算式を挿入したりするのも、
いちいちコーディングしなければならないので不便と感じていたり。
そういうわけで、クエリやテーブルの直接貼り付けを会得しようとしているところでした。

※休みを挟みお礼が遅れてしまったこと、お詫び申し上げます

投稿日時 - 2010-09-24 11:14:31

ANo.1

.Cells(52, 2) = RS.Fields(0).Name
.Cells(52, 3) = RS.Fields(1).Name
.Cells(52, 4) = RS.Fields(3).Name
.Cells(52, 5) = RS.Fields(4).Name

のように。

ところで、OBJEXEは何ですか。

投稿日時 - 2010-09-22 19:14:27

お礼

なるほど、ありがとうございました。

ObjEXEはゴミが残ったままでした、、、。
申し訳ありません。

※休みを挟みお礼が遅れてしまったこと、お詫び申し上げます

投稿日時 - 2010-09-24 11:09:47

あなたにオススメの質問