このブログで言いたいことは、
DateSerialは、Excelでも使えます。
目次
西暦がフォルダ名になっているときの小技です
こんにちは。伊川(@naonaoke)です。
今回は、ExcelのVBAについて紹介をします。
この年の1月から、会社のシステムを作成していました。
散らかったExcelをACCESSに集計する
今月を、ACCESSで指定する
いろいろ、改善をしてきました。
無駄も多いのですが、そもそも、後先を考えないで、ExcelもACCESSも作成してはいけません。
メンテナンスが非常に面倒になるからです。
面倒なメンテナンスをするくらいなら、新規で作成したほうが、早いときがあります。
そうなると、折角作成してモノが無駄になります。
まー、その面倒なメンテナンスをクリアしていくのも、面白いですけど。
今回は、みなさんの実務で、あるあるを紹介したいいと思います。
このブログはこんな人にお勧め
- 毎月、部署内の引継を行うフォルダが、月毎で変わる人
- VBAを勉強している人
- パスワードで保護されているExcelを、VBAを利用して開きたい人
このブログを、読み終わるころには・・・・
VBAを利用してパスワードで保護されたExcelを開けるようになります。また、変数の使い方についても、理解ができるようになります。変数の使い方に関しては、頭の体操のような感じです。このブログを一度読むだけで、忘れないと思いまます。
毎月変わるフォルダについて
202101というように、フォルダ名が設定されている場合があります。
このように、フォルダ名が変更されると、毎回、パスを書き換える必要があります。
なおかつ、そのExcelファイルにパスワードが設定されると、面倒、面倒で嫌になります。
事実、この内容は、私の実務で起こった案件です。
みんなが、口をそろえて、「7回もパスワードを入力したくない」と言っていました。
私自身もやってみると確かに面倒です。
そこでVBAを利用して、解決してみました。
毎月変更させるフォルダに負けるな 作業手順 その1 落ち着いて考える
フォルダ名:202101(2021年1月)の意味 これが、毎月変更される
パスワード:ikawa202101のような組み合わせである
上記の条件で共通しているのは、202101とうものです。
これを、VBAで実装するには、なにを使うかという問題です。
ここをクリアできれば、第一段階はクリアです。
毎月変更させるフォルダに負けるな 作業手順 その2
DateSerialを使う
前回、DateSerialで月初を求めるということをしました。
今月の月初は、2021/01/01です。
ここに着目すると、2021/01という西暦と、月の組み合わせがあります。
2021/01を202101にできれば何とかなりそうです。
2021/01を202101にフォーマットできれば・・・・・・
そう、Format関数で、変形できそうです。
ここまで、出来たら後はカンタンですね。
パスを下記のように変更します。
これで完成です。
って、ちょっと待った!
このコードだけで終わると、落とし穴があります。
毎月変更させるフォルダに負けるな 作業手順 その3 更に完璧を目指す
どのが落とし穴かと言うと、毎月の月初が問題です。
例えば、2021/02/01の引継は、2021/01/31に入力されるはずです。
2021/01/31の業務終了後、夜が明けると、2021/02/01になっています。
Left(Format(DateSerial(Year(Now), Month(Now), 1), “yyyymmdd”), 6)
そのまま実行すると、2月ようのファイルが開きます。
つまり、2021/01/31の引継を確認できません。
要するに、月初だけは、先月のファイルを開く必要があります。
ここが重要!
ではどのようにするのか?
先月もVBAで開けるようにします。
後は、ファイル名に、この変数を仕込むだけです。
そして、IF構文で条件判定をする必要があります。
もし、今日が、月初ならば、先月のファイルを開く
そうでなければ、
当月のファイルを開く
これで完成です。
ここがポイント
基本的、ExcelもACCESSもVBAの構文は一緒です。Excelで身に着けた知識、ACCESSで身に着けた知識、それを融合することが大切です。
まとめ
今回は、私の会社で困っていたことについて紹介しました。
ちょっとした小技で、煩雑な業務もすっきりさせることができます。
今回も最後まで読んでいただきありがとうございました。
今回のサンプルファイルは、No207です。
わからない事を延々と考えるのは、無駄です。
- なんで作動かないの?
- もうやだ!VBAなんか嫌い!
- ネットで調べても情報がない!
必ず作動するコードが、ここにあります。