PAD+AIによる自動化プログラム作成

Power Automate for Desktop(以下「PAD」)は、難しいプログラミングの知識がなくても、パソコンの作業を自動化できる便利なツールです。
さらに最近は、AIを使って「VBScript」という小さなプログラムを自動で作り、それをPADで動かすことで、より効率的に業務を自動化できます。

たとえば、Excelの集計やファイル整理、データのコピー作業など、毎日繰り返しているパソコン作業を「AI+PAD」で自動化すれば、人の手をほとんど使わずに済みます。まるで“優秀なデジタル社員”が、黙々と定型業務をこなしてくれるようなイメージです。


🧩 全体の流れ

ステップ内容使用ツール目的
何を自動化したいか明確にする紙・ExcelなどAIに指示するための準備
AIにVBScriptを作らせるChatGPTなどプログラムを自動生成
PADでVBScriptを動かすPower Automate Desktop実際に動作確認
エラー修正・改善AIと対話自動化精度を高める

🧠 ① まず目的をはっきりさせる

AIに「曖昧なお願い」をすると、プログラムも曖昧になります。
たとえば次のように、具体的な指示文を考えましょう。

悪い例良い例
Excelを処理したい「C:\test」フォルダにある「売上.xlsx」のシート「データ」を開き、B列の合計をメッセージボックスで表示するVBScriptを作ってください。

🤖 ② AI(ChatGPTなど)にVBScriptを作ってもらう

AIに上記のような「具体的な要件」を入力します。
たとえばChatGPTに次のように聞きます:

Power Automate Desktopで使いたいVBScriptを作成してください。
処理内容:C:\test\売上.xlsxを開き、シート「データ」のB列の合計を求めてメッセージで表示する。

AIの出力例:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
Set objWorkbook = objExcel.Workbooks.Open("C:\test\売上.xlsx")
Set objSheet = objWorkbook.Sheets("データ")

sum = 0
For Each cell In objSheet.Range("B2:B100")
    If IsNumeric(cell.Value) Then
        sum = sum + cell.Value
    End If
Next

MsgBox "B列の合計は " & sum

objWorkbook.Close False
objExcel.Quit

⚙️ ③ Power Automate Desktop(PAD)で動かす手順

PADでVBScriptを動かすのはとても簡単です。

手順操作内容
PADを開く
新しいフローを作成
アクション一覧から「スクリプトを実行(Run VBScript)」を検索
生成したVBScriptコードをそのまま貼り付け
保存して実行(▶ボタン)

💡 ポイント
Excelやファイルのパスは実際の環境に合わせて変更しましょう。
(AIはフォルダ構造を知らないため)


🔍 ④ AIと対話しながら改善する

もしうまく動かない場合、AIにエラー内容を伝えると改善案を出してくれます。

例:

エラーが出ました。「オブジェクトが必要です: ‘objSheet’」と表示されます。どう直せばよいですか?

AIは、

シート名の指定ミスの可能性があります。Excelのシート名を正確に確認してください。
もしシート名が「データ 」のようにスペース付きなら "データ " としてください。

のように具体的に教えてくれます。


💡 具体例②:ファイル一覧を取得してExcelに書くVBScript

AIに次のように依頼します👇

「C:\資料」フォルダのファイル名一覧をExcelに出力するVBScriptを作ってください。

AI生成例:

Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder("C:\資料")

Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.Workbooks.Add
Set ws = wb.Sheets(1)

i = 1
For Each file In folder.Files
    ws.Cells(i, 1).Value = file.Name
    i = i + 1
Next

MsgBox "ファイル一覧を出力しました。"

これをPADの「VBScript実行」アクションで貼り付けるだけで動作します。


🏁 まとめ

要点内容
まず「何をしたいか」を具体的に書く
AIにVBScriptを生成してもらう
PADの「VBScript実行」で試す
エラー内容をAIに伝えて改善する
徐々に業務に合わせた自動化に拡張していく

💬 経営者向けひとことアドバイス

VBScript+AIはまるで「小さな自動化の社員」を雇うようなものです。
最初は教え方(指示文)にコツがいりますが、慣れると「面倒な定型業務」を任せられます。
社員が「考える仕事」に集中できるようになり、モチベーションUPにもつながります。

プロンプト(例)

請求データを元に請求書様式に会社別にPDFで作成し、メールで送るvbscriptを作成してください。
#データは“C:\Users\user\Desktop\DATA.xlsx”、請求書様式は“C:\Users\user\Desktop\請求書テンプレート.xlsx”です。

回答

Option Explicit

‘ ファイルパス設定
Dim dataFile, templateFile, outputDir
dataFile = “C:\Users\user\Desktop\DATA.xlsx”
templateFile = “C:\Users\user\Desktop\請求書テンプレート.xlsx”
outputDir = “C:\Users\user\Desktop\請求書PDF”

‘ 今日の日付(yyyy年m月d日、ファイル名用はyyyymmdd)
Dim wkYear, wkMonth, wkDay, todayStr, todayDisp
wkYear = Year(Now)
wkMonth = Month(Now)
wkDay = Day(Now)
If wkMonth < 10 Then wkMonth = “0” & wkMonth
If wkDay < 10 Then wkDay = “0” & wkDay
todayStr = wkYear & wkMonth & wkDay
todayDisp = wkYear & “年” & Month(Now) & “月” & Day(Now) & “日”

‘ フォルダ作成
Dim fso: Set fso = CreateObject(“Scripting.FileSystemObject”)
If Not fso.FolderExists(outputDir) Then fso.CreateFolder(outputDir)

‘ Excel起動
Dim xl: Set xl = CreateObject(“Excel.Application”)
xl.Visible = False

‘ データブックを開く
Dim wbData, wsData
Set wbData = xl.Workbooks.Open(dataFile)
Set wsData = wbData.Sheets(1)

‘ データ最終行取得
Dim lastRow: lastRow = wsData.Cells(wsData.Rows.Count, 1).End(-4162).Row ‘ xlUp

‘ 会社名リスト作成
Dim dict: Set dict = CreateObject(“Scripting.Dictionary”)
Dim i, company
For i = 2 To lastRow
company = wsData.Cells(i, 2).Value
If Not dict.Exists(company) Then dict.Add company, “”
Next

‘ 各会社ごとに請求書作成
Dim wbTemp, wsTemp, rowTemp, pdfPath
Dim ol, mail
Dim tempSheet, tempLastRow

For Each company In dict.Keys
‘ 一時シート作成(データ抽出用)
Set tempSheet = wbData.Sheets.Add
Dim tempRow: tempRow = 2
For i = 2 To lastRow
If wsData.Cells(i, 2).Value = company Then
wsData.Rows(i).Copy tempSheet.Rows(tempRow)
tempRow = tempRow + 1
End If
Next

tempLastRow = tempSheet.Cells(tempSheet.Rows.Count, 1).End(-4162).Row

' 納品日(A列)で昇順ソート
tempSheet.UsedRange.Sort tempSheet.Range("A2"), 1 ' 1=昇順

' テンプレートを開く
Set wbTemp = xl.Workbooks.Open(templateFile)
Set wsTemp = wbTemp.Sheets(1)

' 会社名セット(B3セル)
wsTemp.Cells(3, 2).Value = company

' 日付セット(E2セル)
wsTemp.Cells(2, 5).Value = todayDisp

' 明細転記(テンプレートの見出し直下、8行目から)
rowTemp = 8
Dim j
For j = 2 To tempLastRow
    ' 明細のみ転記(見出し行はスキップ)
    wsTemp.Cells(rowTemp, 1).Value = tempSheet.Cells(j, 1).Value '納品日
    wsTemp.Cells(rowTemp, 2).Value = tempSheet.Cells(j, 3).Value '品名
    wsTemp.Cells(rowTemp, 3).Value = tempSheet.Cells(j, 4).Value '数量
    wsTemp.Cells(rowTemp, 4).Value = tempSheet.Cells(j, 5).Value '単価
    wsTemp.Cells(rowTemp, 4).NumberFormat = "#,##0" ' 単価に桁区切り

    wsTemp.Cells(rowTemp, 5).Value = tempSheet.Cells(j, 6).Value '合計
    rowTemp = rowTemp + 1
Next

' PDF出力(ファイル名に日付を付与)
pdfPath = outputDir & "\" & company & "_請求書_" & todayStr & ".pdf"
wsTemp.ExportAsFixedFormat 0, pdfPath, 0, 1, 0

wbTemp.Close False

' 一時シート削除
tempSheet.Delete

' メール作成(下書きとして保存)
Set ol = CreateObject("Outlook.Application")
Set mail = ol.CreateItem(0)
mail.To = "test@example.com"
mail.Subject = company & "様 請求書"
mail.Body = company & "様" & vbCrLf & "請求書をお送りします。"
mail.Attachments.Add pdfPath

' 下書きとして保存(送信せず)
mail.Save

Next

wbData.Close False
xl.Quit

生成したVBScriptコードをPADアクションにそのまま貼り付け

実行