パワーシェルで検索結果をExcelに出力する方法【ファイル一覧をデータとして活用】


前回は、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アプリを紹介予定です!


コメント

タイトルとURLをコピーしました