| 
    
     |  | すみません。 下記の回答を参考にさせていただき、実行したら、
 rs.error とでます。
 
 参照設定の問題かとおもいましたが、ちがいました。
 だれか分かる方どうかお力をおかしください。
 
 
 ▼taku さん:
 こんばんは。
 SQLで行ったクロス集計です。
 
 以下のデータが
 Sheet1というシートのセルA1から
 設定されているという条件です。
 (1行目は項目名です)
 
 >日付    品名   金額
 >2005/1/12 パソコン 120,000
 >2005/1/23 プリンタ  50,000
 >2005/2/15 パソコン 200,000
 >2005/2/25 プリンタ  35,000
 
 集計結果は、同じブックのSheet2というシート名に書き込みます。
 
 
 標準モジュールに
 '================================
 Sub test()
 Dim idx As Long
 Dim rs As Object
 Dim mysql As String
 If open_ado_excel(ThisWorkbook.FullName) = 0 Then
 mysql = "Transform sum(金額) " & _
 "Select 品名 From [Sheet1$] Group By 品名 " & _
 "Pivot year(日付)*100+month(日付);"
 If get_exec_sql(mysql, rs) = 0 Then
 With Worksheets("Sheet2")
 .Cells.ClearContents
 .Range("a2").CopyFromRecordset rs
 For idx = 0 To rs.fields.Count - 1
 .Cells(1, idx + 1).Value = "'" & Format(rs.fields(idx).Name, "0000年00月")
 Next
 End With
 Call rs_close(rs)
 Else
 MsgBox "rs error"
 End If
 Call close_ado
 Else
 MsgBox "cn error"
 End If
 End Sub
 
 
 別の標準モジュールに
 '==================================================================
 Public cn As Object
 '=========================================================
 Function open_ado_excel(book_fullname As String) As Long
 On Error Resume Next
 Dim link_opt As String
 link_opt = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
 "Data Source=" & book_fullname & ";" & _
 "Extended Properties=Excel 8.0;"
 Set cn = CreateObject("ADODB.Connection")
 cn.Open link_opt
 open_ado_excel = Err.Number
 On Error GoTo 0
 End Function
 '=========================================================
 Sub close_ado()
 On Error Resume Next
 cn.Close
 Set cn = Nothing
 On Error GoTo 0
 End Sub
 '=========================================================
 Function get_exec_sql(sql_str, rs As Object) As Long
 On Error Resume Next
 Set rs = cn.Execute(sql_str)
 get_exec_sql = Err.Number
 On Error GoTo 0
 End Function
 '=========================================================
 Sub rs_close(rs As Object)
 On Error Resume Next
 rs.Close
 Set rs = Nothing
 On Error GoTo 0
 End Sub
 
 |  |