↓↓↓動画の内容を文字起こししています↓↓↓
Excel開発15年、セルネッツの竹本です。
今回はVBA業務改善で月50万円を稼ぐためのロードマップのお話をします。
前回は25万円を稼ぐためのロードマップのお話をしました。今回は50万円です。25万円と大きく違うところからご説明していきます。
なんといってもユーザーフォームが必須になってきます。
ユーザーフォームは情報を登録して呼び出して修正するための機能、顧客管理だったり、在庫管理だったり、売上販売管理で使うケースもありますが、帳票を出すための出力指示画面フォーム、あるいはアンケートの結果を出すときの組み合わせです。
表頭表側のパターンをいろいろ組み合わせながら出したいとき、登録ではなく、出力のパターンを決めていくためのフォームになります。
ユーザーフォームはわかりやすいインターフェースで作れる技術が必要になってきます。
このあたりが25万円と大きく変わってきます。とても重要です。
次がイベント処理です。
ユーザーフォームを覚えればイベント処理も同時に覚えるものです。
マウスのシングルクリック、右クリック、ダブルクリック、チェンジイベント、あとはコマンドボタンを押してなど。
あるアクションを起こしたときに発生するイベントを拾ってなにかをさせるということで、6、7種類ぐらいしかありません。
実際はたくさんの種類がありますが、セルネッツでは6、7種類以外は使わない作り方が望ましいと標準化を図っています。それで十分できます。
配列操作。
Excelには二次元の考え方があります。行方向、列方向、X軸Y軸のことです。
何行目の何列目とすればそこがピンポイントで示されます。
この考え方はExcelのワークシートそのものになります。それを操作できれば大丈夫です。
次が勉強していただくところです。
排他制御(ADO接続)といって、同じExcelファイルを複数の人が同時に更新しようとしたとき、最初に開いている人がいると、他の人は「読み取り専用で開きますか?」となります。
これをプログラムでコントロールすることで、最初の1人目を認識し、残りの人たちは誰が使用しているかを把握できるので、「ウェイトをかける」というやり方です。
更新は一瞬なので、リトライしたときには更新ができる状態になるように作る必要があります。
ADO接続という方法を使って、誰がそのファイルを開いているのかを認識することで排他制御をかけます。
そのためにSQL構文の知識が必要になります。
データベースの知識になりますが、AccessのVBAを勉強したことがあればわかると思います。
ここで言うSQL構文は一般的な基礎です。SELECT句、FROM句などがありますよね。どういう条件で取ってくるとか、すべてならアスタリスクとか。SQL構文の基礎がわかっていれば十分です。
データベースはかなり奥が深いですが、そのあたりは一切不要です。
SQL構文がわかっていれば、データベースをExcelにしてもAccessにしてもSQLにしてもオラクルにしても、そのSQL構文とADO接続でVBAから接続して取ってくる、更新するところまですべてできます。
その知識があれば50万のテーブルに上がってきます。
大事なところは設計です。
25万円では開発も簡易案件になります。
設計とは、お客様と打ち合わせをして問題の本質を見極めるところからです。
お客様が「こういう方法で解決したい」と言ったからといって、その方法で解決できとは限りません。
「その解決方法ではここまではできるけど、ここまでしかできませんよ」
「それよりもこういう方法が絶対に良いですよ」
「それは絶対に無理です」
というところをお客様との打ち合わせの中で決めていく、アドバイスをする、説明を差し上げる力が必要になります。
工程はここに書いてある概要設計、画面設計、コード設計、帳票設計、入出力ファイル設計機能、機能詳細設計、テスト設計。
このあたりも運用支援だったり、やることはいろいろありますが、ここができると25万から50万に上がってきます。
これも大事です。不具合の再現力。
いろいろなケースが考えられますが、
「不具合が出てしまいました。昨日まで大丈夫だったのが止まっちゃいました」
というときに、こちらも再現テストをしますが、再現ができなければバグは直せません。
なので必ず再現をする力が必要です。再現が自分の環境でできなかった場合は直接お客様先に行くことになりかねません。
どんな不具合も再現してやっつける力、ソフトウェアの品質面、1番から5番目までがちゃんとできていれば不具合も怖くありません。
まず1つ目はコードのStep数です。
可読性という言い方をしていますが、1行1行のコーディングされたStepが読み解けるような書き方、わかりやすく見やすく書かれている場合は、不具合が起きても直しやすいです。
そしてメンテナンス性ということで、保守性です。改修性とも言います。
Aさんが作ったプログラムでも、BさんやCさんが直すことはザラにあります。
操作性。ユーザビリティと言っています。ユーザーフォームでいえば導線という考え方です。
パッと見て直感的にどこからどう入力していけば良いのか、どれが必須でどれが任意なのかがわかるような、わかりやすい作り方が重要です。
4番目、拡張性、堅牢性、高速性、安定性です。
拡張性に関しては、3年後5年後10年後、いろいろな技術が入ってくると思います。5年後も10年後もこのシステムを使えるような拡張性のことを言っています。
堅牢性。わかりやすく言うと実行時エラーがすぐに落ちないように作るということです。たとえばユーザーフォームでいえば、日付の欄に「あいうえお」と入ってしまう。テストをしていない人はそういう作り方が多いです。
たとえば郵便番号のところにひらがなを入力できてしまったり、電話番号に全角が入ってしまったり、テストしていないとすぐに実行時エラーになってしまいます。このようなものは堅牢性がないということになります。注意が必要です。
高速性。一般的に速いことが必要になります。それらを含めて安定性ということです。
セルネッツではモンキーテスト、QAでテストをしています。
モンキーテストとは、たとえばユーザーフォームでエンターを押しっぱなしにしたときにどんな動き方をするかとか、タブを押しっぱなしにしたらどうなるか、キーボードを両手で扱ってエンターを叩いても大丈夫かどうか、というテストまでやります。
安定性、実行時エラーは絶対に出てはいけないという考え方です。
On Error Resumeで実行時エラーを回避するというのはもうひとつのリスクがあるので、これはまた別で、On Error Resume Nextは基本的に使わないというお話も別のところでします。
5番目、設計着眼力。
Excel併用力と書いていますが、可読性とメンテナンス性が高い設計をするためにはExcel併用力がないとなかなか厳しいです。
たくさんプログラムで書いてしまう可能性が高いので、Excelの力があったうえで着眼できることもたくさんあります。
非技術スキル。ここまで技術的な必要要素の話をしましたが、これは技術ではないところです。お客様の問題を吸い上げてシステム要件を決めていったりするので、ビジネススキルが重要になります。
そして対人スキルです。コミュニケーション能力、問題解決能力、業務遂行能力。
1番から5番までは、システム開発、在宅ワーク、受託など関係なく必要なスキルになので、これらは一般論ですが重要になってきます。
25万円から50万円という話をしましたが、前回の25万円の話で「VBA活用シーンは2種類ある」という話をしました。
1つはVBAエンジニアです。高度な技術を求められます。
データベースの知識は必要ということで、SQL、オラクル、IBMのデータベースもありますが、セルネッツが受託でやっているのはVBA業務改善なので、不健康なファイルを扱うことが多いです。なのでデータベースはほぼないです。100個の案件のうち95個の案件はデータベースを使いません。
ということで、上の対応スキルよりも下の対応スキルが求められます。
前回の25万円に関しては、ホームページのタケモ塾で紹介をしています。紹介した資料に関してもこちらに書かれています。ちょっと説明します。
VBA活用シーンの比較です。左側が25万円の内容です。左側がVBA業務改善、右側がVBAエンジニア。
このバツをしているのは、「こういう高度な知識は知っておいても良いですが、ほとんど役に立ちません」と言っています。VBAの活用の用途目的が全然違うんです。
右側の高度なところを勉強しながら左側に入ってくるケースもありますが、ほとんどそれが役に立たないということが起きています。
プログラミングの技術が高く、プログラミングでいろいろな問題を解決しようとするので、可読性のところで苦しむことが圧倒的に多いです。
ということで、5つのスキルを重視しているというのは、Excelの実務経験、それからVBAの基礎知識。これで十分です。
そして業務の理解力がなにより重要です。ないと困りますよね、ビジネススキルとコミュニケーション力。
最後に開発の理念的な話をしたいと思います。
Excel業務の効率化はご相談が多いのですが、他のシステムを導入することと比べると、高額投資をすることがあまりないです。VBA活用でExcel業務の効率化、実現できることが本当に多いです。
技術は新しいものがいろいろ入ってきますが、最新技術、高度な技術、すごい技術もあると思います。しかし、それにはコスト高騰化というリスクが直結していることが多いです。
お客様がはすごい技術、最新技術を求めていることはまずなくて、
「抱えている問題を解決したいんですけれども、御社だったらいくらでやってくれますか?」
という話なので、開発言語を提案することはまずありません。
「弊社ができるお手伝いはこういうお手伝いです。どのくらいで解決が図れます」
ということなので、システムを発注するお客様の立場からすると、どのくらいのコストで目の前の課題が解決できるのか、導入後、どのぐらいの料金でお付き合いができるのか、というところに着目していく必要があります。
セルネッツではコスト意識をとても重視しているので、その問題を解決するのに最新技術を使わなければできないかというと、決してそうではないことが圧倒的に多いです。
費用対効果をふまえた利用者目線での解決策、「VBAでできることでやっつけましょう」という提案を差し上げています。
どの技術を使うか、どんな方法を使うかによってメリットデメリットは必ずあります。デメリットがない方法はおそらくないので、デメリットよりもメリットの高い方法を選んでいただければ良いと思ってます。
よくあるご依頼、代表的な3つを挙げました。
1つは請求書と見積書関係。これを作るためにExcelの業務がとても煩雑化している、属人化しているというご相談は本当に多いです。
2つ目は、アンケート集計の結果をもとにして、いろいろな方法でアンケート結果をグラフにまとめてお客様へ提示するというものも非常に多いです。
3つ目は、会計ソフトのデータを販売システムから出力して、会計ソフト用に変換をして、受け入れデータを作って、手入力の負荷を下げて、データの入力、インポートの機能でやりたいというものです。
この3つのようなものは、Excel業務の効率化になりますが、VBAでサクッとできてしまうことが多いです。
専用ソフトとか、開発言語もいろいろありますが、どんな開発言語を使ったとしても同じ結果を得られるのであれば、そこにはどのくらいのコストがかかるのか、という目線で費用対効果を踏まえて多くの方法の中から選定をしていただくことが重要かと思います。
今回の解説は50万円です。
「VBAの業務で改善を図るために必要なスキル」というお話をしました。
ちなみに弊社スタッフでは10万円を「ぴよぴよちゃん」と呼んでいます。こういったスタートもあります。データ入力とか、開発ではなく、開発のお手伝い的な感じです。もちろんVBAを勉強していただくことが前提にはなります。
以上で今回の解説は終了したいと思います。いかがでしたでしょうか。
ご視聴ありがとうございました。
タケモ塾では、今後も皆さんのVBA学習に役立つコンテンツを作成してまいります。
ブログ記事、Youtubeチャンネルのご質問・ご感想・ご要望などお気軽にお問合せください。
お問合せはこちらから ✉
タケモ塾運営:株式会社セルネッツ