マクロプログラムは理解しやすい記述を | Excelで業務改善や業務システム連携を支援、5時間作業を5分に効率アップ!

Excelで業務改善や業務システム連携を支援、5時間作業を5分に効率アップ!

excelや業務システム連携を業務に合わせて最適化、業務効率改善を実現する、中小企業診断士です。
5時間かかるexcelファイルの集計を5分以内に短縮するノウハウをご提供いたします。ソフトウェアの開発方法論や体系立てたシステム開発経験も合わせて提供いたします。

プログラムを作成する場合は、後から見てわかりやすく書いておく必要があります。

それは、コメントやインデントのルールだけでなく、目的とする機能を実現するための記述方法も統一しておくことも含みます。


今回は、下記の2種類のファイルを読み込む関数
・Workbooks.Open
・ExecuteExcel4Macro
それぞれのセルの指定方法を例にして、プログラムのわかりやすさについて考えてみました。


#個人的な”好き、嫌い”もありですが



(1)オーソドックスな Workbooks.Open  の場合


この方法は、普通にファイルを開いて、目的のシートに行って、該当するセルの内容を読み取るという、操作方法と同じイメージです。

そのまま動作させると、読み込む対象のExcelファイルが表示されるので、イメージが掴めると思います。

例えば、変数宣言は省略しますが


  set wb =workbooks.Open("読み込みファイル.xlsx")
v = wb.Sheets("ターゲットシートID").cells(4,5).value


といった感じになります。



(2)Excelファイルを開かずに読みに行く executeExcel4Macro の場合


この関数を使うと、ファイルを開かずに内容を読みに行くので、最初はスマートな方法を見つけた!と喜んでいました。

プログラムコードはこんな感じです。


cellStr = "'C:\Filedir\[読み込みファイル.xlsx]ターゲットシートID'!R4C5"
 v = ExecuteExcel4Macro(cellStr)


ところが、私にはこのセルを指定するCellStrの記述がとても面倒なのです。



(3)どっちがいい?


プログラムは、このように同じ目的を果たすためにいくつかの方法でアプローチできてしまいます。
”どれが正解”ということもない場合がほとんどです。

もちろん、ファイル数、シート数、読み込みセル数、などによって実行時間やCPU負荷が変わってくるので、特に大量のデータを操作する場合は、、(1)(2)のどちらが向いているかを比較しなければならない場合もあるでしょう。


選択基準には、「間違えにくい」「いつ、誰が見てもわかりやすい」というポイントもあります。
こういった基準からすれば、私には「(1)の方がこれまでの書き方と統一されている」ことになります。


今までどんな記述方法を取ってきたか、周りはどのような記述ルールに従っているか、多くの人がわかりやすいか、などを考えると選択肢は決まってくると思います。