誰でもできるゼロからのツール開発【設計〜完成まで】【初級】【Excel VBA】

「アイデアはあるけど、スキルがない・・」

「コピペばかりで自分で考えて作れる自信がない」

「ツールやアプリ開発をしてアピール力を高めたい」

「てか、ツールを作るってどういうこと?

本記事では
Excel VBAツールの開発 を例にして「ゼロからのツール開発の流れ」の一例を紹介します。

実際に自分がやりたいことに当てはめたりして、
「何かを作る」ということの一つの参考にしていただければと思います。

INDEX

今回のテーマ

目的がないと、何も始まらないのでテーマをまず決めます。
この記事では

  • Excel VBA でCSVファイル分割を自動化する

というのをテーマ=目的とします。

テーマを選んだ理由を考える

こんなときに手作業だと効率が落ちる・・・↓

  • アップロードデータのサイズ上限があって分割しなければならない
  • 分割しないとデータが重すぎる・アップロードが遅い
  • 作業分担時にいちいち分割しなければならない

↑こんな感じで良いと思います。

メリットを考える

メリットが語れるとアイデアやツールを有効活用してもらえる確率が高まります。

「ツールを作ること」のメリット

  • ツールを一つ作るだけで同じ作業をしてる人全員が効率よくなる
  • 非効率な作業に対する嫌悪感が減る
  • メンバーごとの仕事の質を揃えられる

「Excel VBA」で作るメリット

  • 配布がめちゃくちゃ楽だからみんなすぐ使える
  • CSVにダイレクトに処理が行える
  • VBAは記述も簡単で始めやすい&デバッグがしやすいため、管理しやすい(環境・個人差あり)
  • 割となんでもできる

アイデアを書き出し、ルールを固める

いきなり作るといっても、まずはルールを決めなくてはいけません。
ここでいうルールとは、「ツールの仕様をどうするか」を具体化したものです。
以下のように、「アイデア」と「ルール」を書き出してみましょう。

アイデア(抽象的でもOK)

・Excelを開いた状態でプログラムを実行したい
・分割ファイルは自分で選択したい
・1行目に項目(header)が存在しているので、分割後のファイルにも付与したい
・分割されたファイル名には、連番を付与して欲しい
・「個に分割する」というのを、実行するたびに指定したい。
・できれば、実行中の進捗がわかるようにしてほしい

↑ざっくりと、こんな願望を書き出してみます。
なんじゃそれってのも出したほうが、良い結果につながることもあります。

アイデアからルールを固める

・ボタンまたはマクロの呼び出しで実行可能にする
・ユーザーがファイルを選択するダイアログを用意する
・1行目をheaderとし、それより下をbodyとする
・分割されたファイル名は、「元のファイル名 + 連番( _n
・分割個数の入力欄を用意する。

一旦こんな感じでルールを決めました。

アイデアを書き出してからのほうが、どう作るかイメージしやすいのでオススメです!
自分に合っているベストな方法を編み出してください。

ツールの動作をイメージする

ここから先は、「プログラムを組む人目線」が重要となります。
コードを書く人が自分でも、他の誰かでも、とにかく大事なのは”伝わりやすくする”ということです。
※どんな表現が伝わりやすいかなどは、現場や、個人差があると思います。

プログラムのコーディングに慣れていなくても、「何がどうなるのか」を具体的にイメージすることで
何からコードを組み立てればいいか、わかりやすくなります。

①実行直後、選択ダイアログを出す。

②ファイルを選択後、分割数を入力する画面を出す

③分割数から「何行ずつのファイルにするか」を計算する。

④対象のファイルをプログラム上で操作・加工する*1

*1 以下の行程をループ

 ⇨ headerを取得し、新しいシート(またはブック)にコピーする

 ⇨ bodyを必要数だけ取得し、先にheaderをコピーしたシートに移す。

 ⇨ header/bodyを移したシートを名前(+連番)をつけて保存

大まかな流れは上記となりました。

ルールが決まったので、次は各処理を実際に作りながら形にしましょう。

実際に作る

① ユーザーがファイル選択できるダイアログを出す。

今回は、この実行ツールと同じ階層をダイアログの初期値として設定するため、
「ChDir ThisWorkbook.path」としました。

② ファイルを選択後、分割数を入力する画面を出す

こんな入力画面が出ます。
説明を表示させておくと使う人がわかりやすいと思います。

③ 分割数から「1ファイルあたり何行のファイルにするか」を計算する

「計算させる処理」などは一つのブロックとして関数化させると良いでしょう。

④ 対象のファイルをプログラム上で操作する

まず、最初に選択したファイルを開きます。

次は以下を実行します。
⑴列数を取得
⑵ヘッダを取得

あとは分割処理のループが完成すればOKです。

以上で大まかに処理のブロックが完成しました。
上記の行程を踏まえ、すべての処理を繋げれば完成です。
(適宜、分岐処理やエラー処理を追加してください)

完成イメージ

サンプル動作です。
CSVの分割が一瞬で終わるので、目的を達成できました。

test_image
1ファイル20000行のデータを10ファイルに分割してます。

厳密には途中で
デバッグしながら動作をチェックする
コードを修正しながら最適化する
ということにも時間を使っています。
今回は、ゼロ ⇨ 完成までの流れの紹介なので細かいところは省略します。

まとめ

いかがだったでしょうか。
「ツール開発」という視点で、Excel VBAはめちゃくちゃ始めやすいと思います。
こういう流れは、ものづくり全てに共通すると思いますので、参考になればと思います。
コードが書けなくても、ツールそのものをイメージ=設計するというのも、立派な「開発」です。
たくさんアイデアをだして、良いものを作っていきましょう!

最後までお読みいただきありがとうございました!