10. CSVのデータをキレイにお化粧3
 帳票を作る部分はこれで完成です。並び替えて集計したCSVファイルからデータを取ってきて、帳票の元になるワークブックに貼り付けていきます。
プロシジャ「帳票編集」の仕上げ
 仕上げの処理はプロシジャ帳票編集の集計の後に続けて書きます。ただし、変数の宣言のみプロシジャの先頭付近へ追加しました。なお、仕上げ処理を追加したプロシジャはここをクリックすると別ウィンドウで表示されますので、そちらでご覧下さい。

 なんだか、だらだら長いですね。でも、これであきらめてはいけません!別に、たいしたことはやってません(笑)穴が空きそうなぐらいよ〜〜〜〜〜く見てみると、見覚えのある呪文ばかりが書いてありませんか?

 それでは、簡単に解説します。

Dim intCopyRows As Integer
Dim intPasteRows As Integer
 ・
 ・
(省略)
 ・
 ・
intCopyRows = 2
intPasteRows = 2

 これらの変数は、コピー元(CSV)とコピー先(新しいワークブック)の編集位置の指定に使います。どちらも、最初は2行目から始めます。

Do Until Workbooks("uriage.csv").Worksheets("uriage").Range("B" & intCopyRows) = ""
 ・
 ・
(省略)
 ・
 ・
Loop

 CSVのB列を2行目から順番に見ていき、セルの中身がカラになったら終わってくださいという意味です。
 左図のように集計後のCSVデータは総計という行以降にはデータがありません。つまり、そこでLoop 〜 Loop Endを終了する必要があります。Untilの所に書いてあるのは、それを判断するための物です。



 Do Until 〜 Loopの中にだらだら書いているのは、データの取り出しと貼り付け、書式の設定です。このように集計されたCSVの中から、このようにコピペする処理がダラダラ書いてあります。

 帳票の1明細を作るには、データの個数と書かれている行と合計と書かれている行の2種類の行から作ります。

 1店舗ごとに必ず個数・合計の順序で並んでいるので、合計という行のコピペが済んだところで1明細(=1店舗)の編集が完成です。コピペが済んだら、帳票の方はフォントや罫線の編集をしてあげます。

 その後は、コピー先(新しいワークブック)の編集位置(intPasteRows)を1行下へ移動(intPasteRows = intPasteRows + 1)し、次の明細行のコピペなど備えます。

 貼付け処理が終わったら帳票の最終行へ太線を付け、各列の幅を設定して終わりです。最終的にこんなふうにキレイに仕上がります。
テストしてみよう!
 またまた、ここまでの内容で動かしてみよう!何度も言いますが、動かす前のワークブックの保存をお忘れ無く!絶対にです。

 テストが終わったらCSVファイルと新しいワークブックは閉じてもかまいません。保存しますか?と聞かれても、これらについては、きっぱりいいえと答えましょう。

 ※印刷設定プロシジャの呼び出し(Call 印刷設定)でプロシジャが無いという内容のエラーが出ますが、これは気にしないでください。ここまでの状態だと、まだ作っていないため必ず出ます。でも、それ以外のエラーが出たときは気にしてください(汗)
Copyright(C) 1999-2006 結城圭介。 All rights reserved