Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


56695 / 76736 ←次へ | 前へ→

【24787】Re:アクセスデータの集計
回答  小僧  - 05/5/10(火) 16:15 -

引用なし
パスワード
   ▼さつき さん:
こんにちは。

かなり強引な処理になりますが、
SQLを多用して表の作成までのコードを作成してみました。

ACEESS側の [T_累計]の [週] フィールドは「S1」「S2」とテキスト型の
データが入っているフィールドと仮定して以下のコードを作りました。

Sub 集計2()
Dim CreCode As String
Dim DelCode As String
Dim In1Code As String
Dim In2Code As String
Dim SelCode As String
Dim DrpCode As String
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim dbName As String
Dim Kiten As Range
Dim Cnt As Long
Dim FLG As Boolean
Dim F As Variant
  
  dbName = "C:\週報.mdb"
    
  Call SQL作成(CreCode, DelCode, In1Code, _
             In2Code, SelCode, DrpCode)
    
  cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
             & "Data Source=" & dbName
  cnn.Open
  
  Call 削除処理(cnn, DelCode, CreCode)
    
  cnn.Execute In1Code
  cnn.Execute In2Code
    
  rst.Open SelCode, cnn

  For Cnt = 0 To rst.Fields.Count - 1
    Range("A1").Offset(0, Cnt) = rst(Cnt).Name
  Next
  
  Range("A2").CopyFromRecordset rst
  rst.Close


'-------------------------------------------------
'
'      H列に商品を並べる処理
'
'-------------------------------------------------

  cnn.Execute DrpCode
 
  Set rst = Nothing
  cnn.Close
  Set cnn = Nothing
End Sub

Function SQL作成(Cre As String, Del As String, In1 As String, _
          In2 As String, Sel As String, Drp As String)
    
Cre = "CREATE TABLE T_Temp(店名 text(50), 契約者名 text(50), " _
    & "担当者名 text(50), 週 text(50),品名のカウント int)"

Del = "DELETE * FROM T_Temp;"

In1 = "INSERT INTO T_Temp ( 店名, 担当者名, 契約者名, " _
                & "週, 品名のカウント ) " _
  & "SELECT 累計.店名, 累計.担当者名, 累計.契約者名, 累計.週, " _
  & "Count(累計.品名) AS 品名のカウント " _
  & "FROM 累計 " _
  & "GROUP BY 累計.店名, 累計.担当者名, 累計.契約者名, 累計.週;"

In2 = "INSERT INTO T_Temp ( 店名, 週, 担当者名, 契約者名, " _
                   & "品名のカウント ) " _
  & "SELECT 累計.店名 & 'の合計' AS 店名, 累計.週, '' AS 担当者名, " _
  & "'' AS 契約者名, Count(累計.品名) AS 品名のカウント " _
  & "FROM 累計 " _
  & "GROUP BY 累計.店名 & 'の合計', 累計.週, '', '';"

Sel = "TRANSFORM Sum(T_Temp.品名のカウント) AS 品名の合計 " _
  & "SELECT T_Temp.店名, T_Temp.担当者名, T_Temp.契約者名 " _
  & "FROM T_Temp " _
  & "GROUP BY T_Temp.店名, T_Temp.担当者名, T_Temp.契約者名 " _
  & "PIVOT T_Temp.週;"

Drp = "DROP TABLE T_temp"

End Function

Function 削除処理(cnn As Object, DelCode As String, CreCode)
On Error Resume Next
  cnn.Execute DelCode
    If Err.Number <> 0 Then
      cnn.Execute CreCode
    End If
  On Error GoTo 0
End Function

ACCESS側にワークテーブルを作って店ごとの合計件数をそのまま
一気にエクセルに貼り付けるコードです。

さつきさんがこちらのコードで宜しいようでしたら、
引き続き商品を並べる処理を作ろうと思うのですがいかがでしょうか?

0 hits

【24563】アクセスデータの集計 さつき 05/4/26(火) 15:29 質問
【24570】Re:アクセスデータの集計 小僧 05/4/26(火) 19:42 回答
【24582】Re:アクセスデータの集計 さつき 05/4/27(水) 13:55 お礼
【24675】Re:アクセスデータの集計 さつき 05/5/2(月) 15:29 質問
【24676】Re:アクセスデータの集計 m2m10 05/5/2(月) 16:42 発言
【24721】Re:アクセスデータの集計 さつき 05/5/6(金) 10:51 お礼
【24771】Re:アクセスデータの集計 さつき 05/5/9(月) 18:59 質問
【24776】Re:アクセスデータの集計 小僧 05/5/10(火) 9:31 回答
【24780】Re:アクセスデータの集計 さつき 05/5/10(火) 11:19 質問
【24787】Re:アクセスデータの集計 小僧 05/5/10(火) 16:15 回答
【24868】Re:アクセスデータの集計 さつき 05/5/12(木) 9:43 お礼
【24879】Re:アクセスデータの集計 小僧 05/5/12(木) 13:26 回答
【24897】Re:アクセスデータの集計 さつき 05/5/12(木) 20:14 お礼
【24903】Re:アクセスデータの集計 小僧 05/5/13(金) 10:19 回答
【24974】Re:アクセスデータの集計 さつき 05/5/16(月) 15:06 お礼
【24573】Re:アクセスデータの集計 kazu 05/4/26(火) 21:02 発言
【24583】Re:アクセスデータの集計 さつき 05/4/27(水) 13:56 お礼
【24576】Re:アクセスデータの集計 ichinose 05/4/26(火) 23:43 発言
【24584】Re:アクセスデータの集計 さつき 05/4/27(水) 13:58 お礼

56695 / 76736 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free