週末からゴソゴソとExcelVBAを使って仕事で使えそうなマクロ作っていた。
VBAはほぼ初めてなので、よくわからないことばかりだった。
基本的な事が分かっていないので自分でほとんどコードが書けず、結局ネットにあるコードをコピペしてきてプロシージャ完成みたいなことをしていた。
コピペでもなんでもいいから実際に一通り完成まで流れればいいなって気持ちで作っていた部分があった。
物を作る工程としてはあんまりいいことじゃないかもしれないけれど、最初は大まかに真似ることからやってみた。
今日ひとまず完成。
大まかな流れは下記のとおり。
<作ったもの>
「仕事でExcelに入力している郵便物の年間の枚数とその宛名一覧(多い順)が欲しい」と思った。
そこで、
- 各月別のシート(1月~12月の12シート)をコピーして1つのシートにまとめる。
- 重複を除いて合計を出し降順で表示する。
- 新規ブックに先程のシートのデータをコピーして名前を付けて保存する。完成。
みたいなものを作ることにした。
土曜日:とりあえず図書館に入門書を借りに行く。以上(炎天下を3時間くらい移動したら日焼けをしてしまう。今も日焼けあとが少し痛い。)
日曜日:入門書を読みながらVBEの画面の出し方とかプロシージャの書き方とか簡単な出力をした。職場で書いた手順書の修正。疲れてさっさと寝た。
月曜日:仕事終わり何だか疲れていたので、自分で書いたおおざっぱな手順書の確認と似たコードがネットに出ていないか確認。
火曜日:一日お休みの為、午前中は入門書の続きを読んだ。午後から、実際にコードをコピペ+修正して実行を繰り返した。すこし動いたので嬉しかった。
水曜日:帰宅してから続きをした。重複でつまずいて心が折れた。並び替え(ソート)はぎりぎりわかった。
ネットでコードを探したら似たものがあったけれど、配列なるものを使うと書いていたけれど配列がなんのことかさっぱりだった。
実際にコピペすれば使えるけれど、どう動いているのかがよく分からずでモヤモヤしていた。
丁寧なコメントと説明文を読めども???が浮かぶ。とりあえず配列とは何ぞや?を知るために入門のサイトで配列を読むけれど、ぼんやりとしてて良く分からない。
実際に使っていくうちにわかってくるのかなと思いながら、今回はこれでいいやと問題をスル―してしまった。
木曜日:早朝、ゴソゴソやっていたら少し進む。全体を修正してできる範囲まで作った。ボタンの配置もやってみた。
最後の方でエラーが何度か出てきて苦戦。なんとかほぼ完成。
あとは、実際のデータにマクロを埋め込んでスタートボタンつけて微調整したら完成。(動作確認は簡単な練習用のもので検証済み。)
なんか疲れたけど、楽しかった。
<実際につくってみたものと動作>
下記の画像は、制作中に練習用で使っていたExcelファイル。
本当は全部のコードをのせたほうがいいのかなと思うのですが、恥ずかしいのと、ほぼコピーで他の方からの借りものなので著作権とかが心配(;´∀`)
そんなもんで、自分でかろうじて書けた1部分と、コピーしたけど「保存のみ」とか「列の削除」とかの入門サイトに多く載っている部分は載せても大丈夫かなと思い今回載せてみました。
※画像は流れで言うと重複と合算が終わったあたり~最後の名前を付けて保存までになります。
@動作
対象のExcelファイルには、各月のシートと集計シートがあります。
各月のシートには郵便物の情報を入力しています。
集計シートの集計ボタンには、マクロを埋め込んでます。
集計ボタンを押すと、マクロが動いて各月のシートの情報をコピーして1つのシート(新規シート名:結合)にまとめます。
コピーが終わると、結合シートのいらない列の削除等を行います。
宛名の重複削除と枚数の合計を求めます。降順に並べ直します。
一番上に項目をつけたり、形を少し整えます。
新しいブックを作り、そこへ結合シートをコピーします。
名前(一年間.xlsx)を付けて保存して完成。
※元々の結合シートは削除します。
色々と変な部分もあると思うけれど、とりあえず一通り形にできて嬉しかった(・ω・)
明日も早いので寝る。