Page Title Here

Below is a list of all the blog posts you are posting that your
visitors might be interested in...

ChatGPTで作る:PADでフォルダのパスを指定して配下のExcelファイルを開く

平野 祥史
Posted by 平野 祥史 on Sep 23, 2025 7:09:49 PM
 

 PADでフローを作成したいときに、Copilotで次のフローを作成する手がかりを与えてくれる仕組みはあるものの、全体の設計からアクションの設定するにあたり、どの順番でアクションを組めばよいかわかりません。

 階層の深いところにある、特定のフォルダ内の全てのExcelファイルを開くため、ChatGPT有料版を使って、どこまでPADのフローの設定ができるのか試してみました。
 この記事では、フォルダのパスを指定して、その中のファイルを処理する PAD フローを、ChatGPTの指示だけで作る手順をまとめます。
 固定パス/ダイアログで選択/設定ファイルから読み込みの3パターンを用意。最後に“最新日付のサブフォルダ→ユーザー様式→会社別フォルダ→Excelを順番に開く”の応用例まで一気通貫で解説します。

 

 

ChatGPTで、PADのフローを相談する前に気を付けたいこと

 

以下のような前提で実施します。

1.Power Automate for desktop(以降 PAD)

2.Excel デスクトップ版

3.(任意)VBA を格納した PadHelper.xlsm(リンク更新ダイアログを抑止する場合)


使用ツール
・Power Automate Desktop(PAD)
・Microsoft Outlook


気を付けるべきこと
ここで気を付けないといけないことがあります。
プロンプトに、どのようなフローを設定すればいいか、質問するだけですと、バージョンに存在しないアクションで設定を案内することが多々あります。
質問する前に、PADのバージョンを認識させ、そのバージョンでどのアクションを設定し、フローを作成すればよいか、聞きましょう。

ヘルプ>バージョン情報
から、バージョン情報を取得できます。
そのバージョン情報にあるアクションで設定する方法を教えるよう、指示しましょう。



 

1.    基本フロー:フォルダのパスを指定する3つの方法

2.    応用:最新の「発行済YYYYMMDD」 → ユーザー様式 → 会社名 → Excel順次オープン

3.    便利な式・コピペ集

4.    リンク更新ダイアログを確実に出さない方法(VBA版・推奨)

5.    つまずきポイントと対処

6.    まとめ

 

Power Automate リスキリング研修の概要(アーカイブ)の一部をご覧になりたい方は、こちらのフォームから視聴希望のご連絡をいただきましたら、アーカイブのリンクをメールにてご案内いたします。
ブラウザから特定のテキスト情報を抽出する方法について解説しています。
(視聴時間 約8分)
 

 

 
マクロとRPAとの違い
RPAの活用パターンを掲載 !
 
 

 

基本フロー:フォルダのパスを指定する3つの方法

 

方式A:固定パスを変数に設定

1.変数の設定

変数名:BaseFolder

値:O:\総務\契約_PADテスト用

2.フォルダー内のファイルを取得

フォルダー:%BaseFolder%

フィルター:*.*(または *.xlsx / *.pdf など)

結果:Files

この方式は最速。現場の固定フォルダ運用に向いています。

方式B:フォルダー参照ダイアログから選ぶ

1.フォルダーの参照(UI 自動化 > フォルダーの参照)

初期パス:空でOK

結果:BaseFolder

2.以下は方式Aと同じ

利用者に毎回選ばせたいときはこの方法です。


方式C:設定ファイルから読む(再配布や環境差に強い)

1.settings.txt(UTF-8)を作り1行目にパスを書く
例:O:\総務\契約_PADテスト用

2.PAD:ファイルからテキストを読み取る

ファイル:settings.txt

結果:SettingsText

3.テキストをトリム(前後空白・改行を削除)

入力:%SettingsText%

出力:BaseFolder

4.以下は方式Aと同じ

 

応用:最新の「発行済YYYYMMDD」ユーザー様式会社名Excel順次オープン

 

日付の新しいフォルダを自動特定し、配下の Excel を古い順に開きます。

手順ハイライト

1.BaseParentFolder を決める(固定/参照/設定ファイル)

2.サブフォルダ一覧を取得(フィルター:(発行済20250923、のように、先頭のフォルダ名に必ずついている名前の)発行済*)

3.サブフォルダ名から YYYYMMDD を抽出 → 数値化 → 最大値=最新日を選択

4.BestFolderPath + "\ユーザー様式" を作成 → 存在チェック

5.会社ごとのサブフォルダ(例:ABCプレス)だけに限定

6.該当フォルダ内の *.xlsx を最終更新日昇順で取得 → 順番に開く

7.リンク更新ダイアログ抑止(VBA 利用 or 条件付きキー送信)

主要アクション

PADのソースに制約がかかっているため、ChatGPTでは、マクロやGoogleAppsScriptのように、自動的にソースを作成して、貼り付けて、動作確認することができません。

以下のように、アクションを設定する際のソースのイメージを教えてくれます。
このコードをPADに貼り付けても、何も起きません。
ソースの流れを把握する手がかりとして参照してください。

----------------
変数の設定        BaseParentFolder = (方式A/B/Cで取得したパス)
フォルダーのサブフォルダー取得  入力:%BaseParentFolder% フィルター: 発行済*  → Subfolders

For each F in Subfolders
  テキストの分割         F を '\' で分割 → PathParts
  リストを逆順
  変数の設定            FolderName = PathParts[0]
  サブテキストの取得      長さ3 / 開始0 → Head3
  If Head3 = '発行済' then
     サブテキストの取得   FolderName の末尾8桁 → DateText
     テキストを数値に      DateText → DateNum
     If DateNum > BestKey then
        変数の設定        BestKey = DateNum
        変数の設定        BestFolderPath = F
     End
  End
End

If BestFolderPath <> '' then
  テキストの結合         BestFolderPath, '\ユーザー様式' → UserFormFolder
  フォルダーが存在する場合  UserFormFolder
     テキストの結合      UserFormFolder, '\小島プレス' → CompanyFolder
     フォルダーが存在する場合 CompanyFolder
        フォルダー内のファイルを取得
           フォルダー: %CompanyFolder%  フィルター: *.xlsx
           ソート1: 最終更新日時 / 昇順  → ExcelFiles

        (任意)Excel 空起動 → ExcelInstance
        Excel マクロの実行「PrepForOpen()」※VBAでリンク更新抑止

        For each X in ExcelFiles
           Excel の起動(既存プロセス使用 / ドキュメント:%X%)
           (VBAを使わない場合は)条件付きで「更新しない」キー送信
        End
  Else
     メッセージ表示「ユーザー様式がありません」
  End
Else
  メッセージ表示「発行済フォルダが見つかりません」
End
----------------



便利な式・コピペ集


パス結合(バックスラッシュを安全に)


・テキストの結合 でリスト指定:
%Directory2%, '\', %FileName2% → FullPath

フォルダ名だけ取りたい

・F を \ で分割 → PathParts

・リストを逆順 → PathParts[0] が末尾(フォルダ名)

「発行済YYYYMMDD」から日付抽出(末尾8桁)

・サブテキストの取得:開始 = len(FolderName) - 8, 長さ = 8 → DateText

・テキストを数値に変換 → DateNum(例:20250922)

 

 

リンク更新ダイアログを確実に出さない方法(VBA版・推奨)

 

1.PadHelper.xlsm(信頼済みフォルダに保存)を用意
2.VBA(標準モジュール)に以下を貼り付け

-----------
' Module: ModPad

Public Sub PrepForOpen()
    Application.AskToUpdateLinks = False
End Sub

Public Sub OpenNoUpdate(ByVal filePath As String)
    Application.AskToUpdateLinks = False
    Workbooks.Open filePath, UpdateLinks:=0, ReadOnly:=False
End Sub
------------

3.PAD の先頭で Excel を空起動 → ExcelInstance に保存
4.Excel マクロの実行:PrepForOpen()(一度だけ)
5.各ファイルを開く時は Excel マクロの実行 に
ModPad.OpenNoUpdate("%X%")
と引数付きで呼び出す("%X%" の二重引用符を忘れない)

こうしておくと、2つ目以降で出がちな「更新しますか?」が出ません。
UI自動操作の「キー送信」で潰す方法より安定します。

つまずきポイントと対処

 

フォルダの値が空
→ 方式B/Cでは、トリム(前後空白・改行除去)を挟む。

バックスラッシュの二重挿入/欠落
→ テキストの結合(リスト)で '\' を項目として入れるのが最も安全。

Excel が既に起動していて取り違える
→ 「既存の Excel プロセスを使用」をONのうえ、VBA の呼び出しは同じ ExcelInstanceに向ける。

会社以外の Excel が混ざる
→ CompanyFolder を存在チェックしてから「フォルダー内のファイルを取得」へ。

発行済フォルダが古いものを拾う
→ 末尾8桁の数値化(DateNum)で最大値比較するロジックにする。



まとめ

 

・フォルダパスの指定は「固定」「参照ダイアログ」「設定ファイル」から用途で選ぶ。

・実務では「最新日付→ユーザー様式→会社別→Excel」の階段探索がオーソドックスなやり方です。

・Excel のリンク更新は VBAの UpdateLinks:=0 が安定します。

・ChatGPT に「何をしたいか(目的・命名・並び順・拡張子)」を伝えると、PAD の組み立てが早くなる。

 

 
 
 

 

 

 

 

Topics: RPA, DX, 業務効率化, Power Automate Desktop, PowerAutomate, MSN, Outlook

    Most Popular

    Post By Topic

    全て表示