理系ときどきカメラ

20代理系大学生による カメラ関連とガジェットレビュー

VBA入門してみました。【結論】本を買うならネットで調べよう

スポンサーリンク

2か月間更新をさぼっていました。

この2か月で何をしていたかといいますと、VBAを勉強していました。

VBAを勉強する必要があったのは、2か月で退勤管理用のプログラムを組む必要があったんです。

本を読んだり、ネットで探したりと…大変になると思って居たのですが、結論から言うと本よりもネットの方が楽です

これからVBAでプログラム作ってみたいって人のための私が行った導入法をまとめてみました。

 

 

スポンサーリンク

 

本よりもネットで調べる

本でVBAのことを調べることも可能ですが、ネットの方が楽です。

その理由として

①求める作業に近いことが見つかる可能性がある

②コピペできる

です。

本で求める作業を見つけるには膨大な量のページを見ないといけませんが、ネットならググればいいですよね。またプログラムを書いていることも多いですので必要な部分をコピペすればタイピングミスも少なくなりますよね。

ただし、全く同じ環境ではないので細かい宣言を変えてあげることができるスキルは必要だと思います。

 

今回作ったプログラムの全貌

簡単な勤怠管理システムです。購入も検討したのですが不満な点があったりと満足できなかったのでそれならば作ってしまえの精神です。

求める条件

・出勤・退勤管理がExcel上で行える

・現在使用しているICカードにて打刻が行える

・出勤・退勤のタイミングでメール送信ができる

・リアルタイムで出勤状況の確認ができる

etc…

 

導入方法

①システムの流れを考える。

ICカードにて勤怠管理を行うのでその流れからプログラムをしてみました。

 

1.ICカードから固有の番号を読み取る

2.名簿シートから一致する人を探す

3.一致した人名と現在時刻を記録簿シートに記入

4.[別]メール送信用のプログラムに移行する

5.[別]リアルタイム出勤状況管理プログラムに移行する

 

こんな感じでイメージして作りました。

一気に全部のプログラムを作るのでなくて、パーツパーツで作っていきその後に結合していく感じですね。

プロのプログラマーさんからしたらどうなんだ?って思われるかもしれませんが、ド素人ですのでそのあたりはご容赦くださいm(__)m

 

②パーツごとに近い動作をするプログラムを調べる

ここが一番大変でしたね。

例えば「1.ICカードから固有の番号を読み取る」これだけなら同じようなコードは沢山見つかります。でもここから、「2.名簿シートから一致する人を探す」ここへの繋げ方は自分で工夫しないといけなかったりとこの作業が大変でした。

あとICカードの読み取りはExcel 32bit版じゃないとだめだったりと細かいことでエラーが出ると何が違うのか修正が大変でした。

 

③簡単に出来るコードは簡単にする

長いコードは良くないってどこかに書いてあって、必要ないものは削りましょうってことですね。

あまり短くはできませんでしたが…

軽量化という意味では画面の更新を止めたりするのも有用みたいですね。

 

④起こりうるエラーを回避する

On Error GoTo lineで回避するのが一般的なのでしょうか。

ただし、これはエラーが起こりそうなコードの前に設置して、エラーが起きたら指定した行まで飛ぶということだと思います。

つまり途中でエラーが起きたら以降は無視しして指定行まで飛んでしまいます。

これだとVBAが全部実施されたわけではないので、出来るだけこの構文は使わずに書きました。

1か所だけ書いたのがメール送信時にサーバーエラーのエラー回避です。

ここはこちら側ではどうにもできないので、エラーが起きたら送信エラーの文章を出すようにして注意を促すことはしています。

 

スポンサーリンク

 

まとめ

実際のプログラムはまだ完成版までもっていけていないで、載せることはできませんが興味ある方はご連絡いただければご相談致します。

興味がある方が多ければ、コードの例なども載せていこうと思います。