VBScriptでは、Function(ファンクション)プロシージャを使用することで、オリジナルの関数を作成することが可能です。
ここでは、Windows向けのパス([\]区切り)をLinux向けのパス([/]区切り)に変換する例を挙げつつ関数の作成方法について解説したいと思います。
まずは関数を使用しない例になります。
似たような記述が並んでおり、変換するパスが増えるとソースがどんどん長くなってしまいます。
また、Cドライブ(C:)と記述されている箇所がDドライブになった場合、3箇所修正が必要です。
修正箇所が多くなるとそれだけミスが起きる可能性も増加しますね。
Option Explicit ' 宣言 Dim strPath strPath = Replace("C:\folder1\folder2\folder3", "\", "/") strPath = Replace(strPath, "C:", "") MsgBox(strPath) strPath = Replace("C:\folderA\folderB\folderC", "\", "/") strPath = Replace(strPath, "C:", "") MsgBox(strPath) strPath = Replace("C:\folderX\folderY\folderZ", "\", "/") strPath = Replace(strPath, "C:", "") MsgBox(strPath)
実行結果は以下の順番でメッセージボックスに表示されます。
/folder1/folder2/folder3
/folderX/folderY/folderZ
/folderX/folderY/folderZ
では、この処理を関数化した例を見てみます。
すっきりしましたね。実行結果は、関数化前と同じです。
変換するパスの数が少ないので、ソースコード全体としては関数化前後で変わらないですが、パスが100個とかになってくると、行数が大きく変わってくると思います。
また、処理が1箇所にまとまったので、機能の追加などが簡単に出来るようになります。
Option Explicit Call funcReplace("C:\folder1\folder2\folder3") Call funcReplace("C:\folderA\folderB\folderC") Call funcReplace("C:\folderX\folderY\folderZ") Function funcReplace(str) str = Replace(str, "\", "/") str = Replace(str, "C:", "") MsgBox(str) End Function
まとめとしては、関数化することで、処理の追加、削除が簡単になる。
また、ソースコードの可動性が高くなる(見やすくなる)です。
関数化はどの言語で必須になりますので、しっかり習得しておきましょう。
コメント