EXCEL 2003における
VBA、マクロについての質問です。CSVデータを取り込んで、EXCELシート上に並べたものに、社内番号が変わるか、月が替わるごとに改ページをし、そのページごとにヘッダーとフッターを設定する。
更に罫線を設けて、印刷する。という作業を行いたいのですが、悩んでおります。下記のCSVデータを取り込んで、EXCElに表示して、印刷するという流れです。
Csv元データ
社内番号,個人氏名,年月日,交通費,労働時間,昼休み時間
1, hoge山hoge雄,2007/10/1,1000,8:00,,
1, hoge山hoge雄,2007/10/2,1000, 8:00,,
社内番号,個人氏名,年月日,交通費,労働時間,昼休み時間
2, hoge川hoge子,2007/10/1,100, 8:00,,
2,, hoge川hoge子,2007/10/2,100, 8:00,,
…
…
マクロ実行後イメージ希望
ヘッダー
社内番号 年月日 名前 交通費 労働時間,昼休み時間
メイン
1 2007/11/1 hoge山hoge雄 1000 8:00
1 2007/11/2 hoge山hoge雄 1000 8:00
… … … …
1 2007/11/30 hoge山hoge雄 1000 8:00
フッター
合計 30000 160:00
(改ページ)
ヘッダー
社内番号 年月日 名前 交通費,労働時間,昼休み時間
メイン
2 2007/11/1 hoge川hoge子 100 8:00
2 2007/11/2 hoge川hoge子 100 8:00
… … … …
2 2007/11/30 hoge川hoge子 100 8:00
フッター
合計 3000 160:00
悩み
フッターの合計計算の入れ方がわからない。年月日か、社内NOが変わった時点で1行挿入、フッターの合計計算を挿入、改ページというロジックをいれたいがうまくいかない。年月日か、社内NOが変わった時点で、行を挿入して、合計計算の行をいれ、その後、改ページという流れのロジックを作りたい。
'改ページ & フッター プロシージャ '
'データの変わり目で改ページ挿入 シート2のデータを順に確認
Public Sub changepage()
Dim rindex As Integer
Dim cindex As Integer
rindex = 1
cindex = 1
Do While Worksheets("Sheet2").Cells(rindex, 1) <> ""
'空白セルでない間
If rindex <> 1 Then
If Worksheets("Sheet2").Cells(rindex - 1, 1).Value <> "社内番号" Then
'最初の1行(タイトル行)と2行目の行は除く
If Worksheets("Sheet2").Cells(rindex - 1, 1) <> Worksheets("Sheet2").Cells(rindex, 1) Then
'1つ前の行とデータが違う場合
'改行挿入シフトダウン
Worksheets("Sheet2").Rows(rindex).Insert Shift:=xlDown
'★★その次の合計計算 (マクロの記録を使ったのですがうまくいっていません。)_'
'Worksheets("Sheet2").Rows(rindex + 1).FormulaR1C1 = "=SUM(R[-31]C:R[-1]C)"
'Selection.AutoFill Destination:=Range("M6:R6"), Type:=xlFillDefault
'Range("M6:R6").Select
‘★★ 計算処理ここまで’
'改ページ挿入
ActiveWindow.SelectedSheets.HPageBreaks.Add Cells(rindex + 1, 1)
rindex = rindex + 1
'ActiveWindow.SelectedSheets.VPageBreaks.Add ActiveCell
'HPageBreaks…カッコの中にページ番号を指定します
'Range …改ページを入れる場所です
End If
End If
End If
rindex = rindex + 1
Loop
End Sub
長くなりましたが、困っていまして、申し訳ないですが、
どなたか教えていただければ、と思います。よろしくお願いいたします。
お礼
imogasiさん 申し訳ありません。プログラマとしての力量はまだ、VBをはじめたばかりで、会社で、VBAの仕事を任されまして、四苦八苦しているところです。今回はネットで自分で調べてもなかなか、調べにくく、つい、丸投げに近い形で質問を投稿してしまいました。 丁寧に回答いただきありがとうございます。(3)の発想、目から鱗でした。確かにそのほうが、行数が変動するデータの合計は出しやすいですね。そして、キーコードについても、IF文などで、ソートしながら、作れば、日付と社内番号ごとに並べられそうです。 今一度上記を念頭に置き、取り組みたいと思います。 ありがとうございました。