|
▼ぼっちゃん さん:
こんにちは。
直接の問題以外にも色々ありそうですね。
> Dim aaa As String
>
> aaa = DCount("*", "Q_集計(製品名)A") + 2
DCount の戻り値は数値型ではないのでしょうか。
> With objExcel
> .Worksheets.Add
> .Range("A2").CopyFromRecordset rst
Excel のオブジェクトは
Application - Workbook - WorkSheet - Cell(Range)
の様な順序です。
現在のコードではエラーが出ないのかもしれませんが、
潜在的なバグの元になるかと思われます。
> End With
> Set objExcel = Nothing
Excel を不可視にしたままの状態で
オブジェクトだけ破棄しようとすると
インスタンスが残りっぱなしになってしまいますよ。
インスタンスが残りっぱなしなのに
何回もこのExcelファイルを開こうとすると
最悪ファイルが破損する恐れもあります。
> Q_集計(製品名)A
クエリの名前に()がついているのは余り宜しくないかと思われます。
こちらの問題については Miona さんという方のサイトが
非常に参考になるかと思われますので、
是非一度目を通されてみてください。
Miona's Square
フィールド、コントロール、オブジェクトや変数などに付ける「名前」について
h tp://ww3.tiki.ne.jp/~kaya/Ac_tips.html#Tips0_001
(こちらの掲示板は直リンク禁止ですので補完して下さい)
> .Range("A1").Value = "製品名"
> .Range("B1").Value = "件数"
> ・・・
フィールド数にもよるのですが、
せっかくレコードセットがあるのですから、
フィールドをループさせた方が効率的かもしれませんね。
> "=SUM(R[-aaa]C:R[-1]C)"
例えば aaa が 6行目の時、R[-6] は 0行目 になり、
Excel が勝手に 65535 行目に変換してしまいますよ。
求めたいのはヘッダー行を除いた合計ではないのでしょうか。
Private Sub コマンド0_Click()
Dim objExcel As Excel.Application
Dim objWkb As Excel.Workbook
Dim objSht As Excel.Worksheet
Dim FName As String
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim qdf As DAO.QueryDef
Dim aaa As Long
Dim i As Long
'FName = "C:\Documents and Settings\2103\デスクトップ\111.xls"
'ファイル名が決め打ちの場合、下行をコメント化して上行のコメントを解除してください
FName = CreateObject("WScript.Shell").SpecialFolders("DeskTop") & "\111.xls"
Set db = CurrentDb
Set qdf = db.QueryDefs("Q_集計_製品名_A")
Set rst = qdf.OpenRecordset
Set objExcel = CreateObject("Excel.Application")
Set objWkb = objExcel.Workbooks.Open(FName)
Set objSht = objWkb.Worksheets.Add
With objSht
For i = 0 To rst.Fields.Count - 1
.Cells(1, i + 1).Value = rst(i).Name
Next i
.Range("A2").CopyFromRecordset rst
rst.MoveLast
aaa = rst.RecordCount + 2
.Range("A" & aaa).Value = "合計"
.Range("B" & aaa).Value = _
"=Sum(R[-" & aaa - 2 & "]C:R[-1]C)"
End With
objWkb.Close True: Set objWkb = Nothing
objExcel.Quit: Set objExcel = Nothing
rst.Close: Set rst = Nothing
qdf.Close: Set qdf = Nothing
db.Close: Set db = Nothing
End Sub
こんな感じでいかがでしょうか。
|
|