前回は、PowerShellのGUIで複数条件ファイル検索ができるツールを作成しました。今回はさらにその応用で、検索結果をExcelファイルとして保存できる仕組みを加えてみましょう。
「検索して終わり」ではなく、データとして残すことで、報告書やログとしても活用できるようになります。
この機能でできること
- 検索結果(ファイルパス)を
- ボタン1つでExcelファイルに出力
- 日付付きファイル名で保存
使用するPowerShell機能
Add-Type
で GUI 操作Export-Excel
ではなく、COMオブジェクトを使って Excel を直接操作(追加モジュール不要)
Excel出力付きスクリプト(検索結果追加編)
前回までのスクリプトに、Excel出力ボタンと処理を追加した形です:
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = "ファイル検索+Excel出力"
$form.Size = New-Object System.Drawing.Size(550, 500)
# 検索条件UIは省略(前回と同じ)
# 検索結果リスト
$listBox = New-Object System.Windows.Forms.ListBox
$listBox.Location = New-Object System.Drawing.Point(10, 120)
$listBox.Size = New-Object System.Drawing.Size(510, 280)
$form.Controls.Add($listBox)
# Excel出力ボタン
$btnExport = New-Object System.Windows.Forms.Button
$btnExport.Text = "Excelに出力"
$btnExport.Location = New-Object System.Drawing.Point(200, 420)
$btnExport.Size = New-Object System.Drawing.Size(140, 30)
$form.Controls.Add($btnExport)
# Excel出力処理
$btnExport.Add_Click({
if ($listBox.Items.Count -eq 0) {
[System.Windows.Forms.MessageBox]::Show("検索結果が空です")
return
}
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false
$workbook = $excel.Workbooks.Add()
$sheet = $workbook.Sheets.Item(1)
$sheet.Cells.Item(1,1).Value = "ファイル一覧"
$row = 2
foreach ($item in $listBox.Items) {
$sheet.Cells.Item($row,1).Value = $item
$row++
}
$savePath = "$env:USERPROFILE\Documents\検索結果_$(Get-Date -Format 'yyyyMMdd_HHmmss').xlsx"
$workbook.SaveAs($savePath)
$workbook.Close($false)
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($sheet) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($workbook) | Out-Null
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
[System.Windows.Forms.MessageBox]::Show("Excelに保存しました:`n$savePath")
})
実行結果
- 検索結果がリストに出た後、「Excelに出力」ボタンを押すだけ!
- 「ドキュメント」フォルダに自動保存されます(日時付き)
- Excelには1列でファイルのパスが一覧出力されます
活用アイデア
- 調査・監査で取得したファイル一覧を報告書用に
- 定期バックアップや整理ログとして記録
- 社内ツールとして「誰でも使えるファイル収集ツール」に!
まとめ
PowerShellは、検索や操作だけでなく、Excel形式でのデータ出力までこなせる超万能ツールです。特別なライブラリも不要で、Windowsだけで完結できるのが魅力。
次回は、条件を保存&再利用できる設定機能付きのGUIアプリを紹介予定です!
コメント