VBAによる自動化の運用(汎用化)でつまずきやすいパスの設定やその対策について考えてみた(初心者向け)@GPT
※この記事はVBA初心者が記載したものです。
GPTなどに頼ってスクリプトを生成したい人が出くわしそうなポイントを個人的な経験を元に記載していますので、レベルが低い内容であることはあらかじめご了承ください。
さて、GPTでスクリプトが作成出来るようになり、VBAに詳しくなくても、業務に使えるスクリプトを生み出せる時代になりつつあります。
ただ、試しにやってみた所では、現在は基本的に個人使用に限定されがちで成果物を他人にシェアし汎用化させるのには壁があると感じました。
特にパスの設定は必ず出くわす壁になると感じました。
他人に成果物をシェアする際にパスの設定が出来ず「使えない」という経験をされた方もおられると思います。
そうすると、こちらでわざわざ設定しないといけない手間も増えたりして、次第にシェアはやめていこうという負のサイクルに入ります。
そのため、「パスの設定」を簡便にするという点がクリアされていないと成果物を汎用化させるのは難しいと感じました。
ということで「パス」の話に移ります。
さて、パスには絶対パスと相対パスというのがあるようです。
絶対パス:ファイルシステムのルートからの完全なパスを示します。これはwindowsであればファイルを選択して「右クリック」して「パスのコピー」でコピーされるやつです。
絶対パスの例:: C:\Users\Username\Documents\project\file.xlsx
相対パス:ファイルやフォルダの位置を示す方法の一つで、基準となる場所(例えば、現在の作業中のフォルダ)からの相対的な位置を指定します。そのため、作業中のフォルダ内であれば、「ファイル名」だけになります。
相対パスの例(projectフォルダを基準): file.xlsx
それぞれのメリットとデメリットは以下です。
絶対パス
<メリット>
一意性:絶対パスはファイルシステム全体に対して一意なので、同じファイルを指し示すことができます。どのPCであっても同じパスを使えば同じファイルにアクセスできます。
分かりやすさ:パスを見ただけで、ファイルがどこにあるのかすぐに理解できます。ファイルシステム全体を指定しているため、混乱が少ないです。
<デメリット>
移動に弱い:ファイルやフォルダの位置が変わると、パスが無効になります。別のPCにコピーするときなどに問題が生じます。
設定の手間:複数のPCで同じスクリプトを使用する場合、すべてのPCで同じパス構造を保つ必要があります。これは管理が難しいことがあります。
これを見ると、「個人で使用するには間違いが少ないから良いが、他人にはシェアしにくい」ということが分かります。
相対パス
<メリット>
移動に強い:フォルダ構造が変わらない限り、スクリプトとデータファイルを一緒に移動しても動作します。別のPCにプロジェクトをコピーする場合でも問題が発生しにくいです。
柔軟性:異なるユーザーや異なるPCでファイルが異なる場所に保存されていても、相対的な位置関係が同じであれば動作します。
<デメリット>
基準が必要:相対パスは基準となるディレクトリが必要です。スクリプトをどこから実行するかを正しく設定しておく必要があります。
分かりにくい:長い相対パスや複雑なディレクトリ構造では、ファイルの位置が分かりにくくなることがあります。特に他の人がプロジェクトに参加するときには混乱のもとになる可能性があります。
こちらは「最初に設定する際に分かりにくい場合があるが、他人にシェアしやすい」ということが分かります。
<絶対パスと相対パスのまとめ>
絶対パスが向いている場合
①ファイルの場所が固定で変更されない場合。
②プロジェクトが一つのPC内で完結し、複数のPCにまたがらない場合。
相対パスが向いている場合
①プロジェクトが複数のPCやユーザー間で共有される場合。
②ファイルやフォルダの位置が変更される可能性がある場合。
ということで、「相対パス」というのが汎用化の重要なキーワードになります。
しかし!!!!
GPTに依頼して出来るスクリプトは基本的に絶対パスで作成されるようです。
そのため、相対パスという存在を知らないまま成果物が出来てしまいます(経験者談)。
<GPTさんにその理由を聞いてみました>
ということで、「GPTにVBAスクリプトの作成を依頼して出来たものは相対パスに変換しないと汎用化が難しい」ということが分かりました。
※ただ、絶対パスで問題なく動くスクリプトが生成されている場合は、追加で「相対パスにして」みたいな感じで依頼すると問題なく変換されるレベルで簡単に出来てしまうので、「GPTから我々に向けた罠」にも見えてしまいます。。
<おまけ?BATファイルがらみ>
さらにVBAを実行するためにはExcelを開いてマクロを実行させる必要があります。
ただ、詳しくない方は、マクロの実行ということ自体、ためらいがあるようです。
ここで出てくるのがBATファイルです。
webuiの起動に出てくるやつですね。
私がチャレンジした際にはBATファイルだけではExcelファイルに保存したマクロが実行されなかったので、そのコマンドを入れたpowershellスクリプトを呼び出すBATファイルにしました。(これはGPTさんに依頼すればそうしてくれます)
これで、BATファイルをダブルクリックすることで、Excelのマクロが実行されるようになり、さらに敷居が下がるということです。
<GPTを頼りにしたスクリプトの作成の流れ(案)>
ということで、他人にも使えるようなVBAスクリプトをGPTに依頼して作成する場合は以下のような流れにすると良いと感じました。
①絶対パスを使用して基本的な成果物を生成されるスクリプトを作る(GPTに依頼)
②実行ファイルなどを一つのフォルダ内にまとめる(①の段階でしておきたい)
③スクリプトを相対パスに直す(GPTに依頼)
④batファイル、powershellスクリプトなどでExcelのVBAを実行させるようにする(GPTに依頼)
これで、フォルダをコピーなどするだけで、他のpcでもパスの設定を変える事なく、VBAスクリプトが使用出来る様になると感じました。