この記事では、フォルダ内全てのExcelファイルの中身を検索し、探しているファイルを簡単に見つける方法を紹介します。
この記事を読めば、いちいちファイルを開いて内容を確認する手間がなくなります。
こんな方におすすめ
- あのファイルどこいったっけ…という方
- ChatGPTを使ったけど、機能しなかった方
この記事ではコードを紹介しますので、それをコピーして張り付けるだけでps1ファイルが作れます。
機能紹介
例:下記のようなExcelから、「当たり」と書かれたファイルを探す
このとき、「テスト7」と「テスト13」の中には「当たり」と書かれていて、それ以外には「外れ」と書かれています。
このとき、下記のように内容の検索ができます。
さっそく作り方を説明します。
ps1ファイルの作り方・使い方
ps1ファイルの作り方は、この記事を参照ください。
図解付きでps1ファイルの作り方と使い方を紹介しています!
コード紹介
今回使用したファイルの中身はこんな感じです!
# COMオブジェクトを作成してExcelを起動
$excel = New-Object -ComObject Excel.Application
$excel.Visible = $false # Excelウィンドウを非表示にする
# スクリプトファイルのディレクトリをカレントディレクトリに設定する
Set-Location -Path $PSScriptRoot
# 検索する単語の入力
$keyword = Read-Host "検索する単語を入力してください"
# Excelファイル内のテキストを検索する
$files = Get-ChildItem -Path . -Recurse -Filter *.xlsx
foreach ($file in $files) {
$workbook = $excel.Workbooks.Open($file.FullName)
foreach ($worksheet in $workbook.Worksheets) {
$rows = $worksheet.UsedRange.Rows.Count
$cols = $worksheet.UsedRange.Columns.Count
for ($i = 1; $i -le $rows; $i++) {
for ($j = 1; $j -le $cols; $j++) {
$cell = $worksheet.Cells.Item($i, $j)
$cellText = $cell.Text
if ($cellText -match $keyword) {
Write-Host "File: $($file.FullName)"
Write-Host "Cell: $cellText"
Write-Host "--------------------------"
}
}
}
}
$workbook.Close()
}
# Excelアプリケーションを終了
$excel.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($excel) | Out-Null
Remove-Variable excel
Write-Host "検索が完了しました。"
この上のコードをコピーして、テキストに張り付けてps1ファイルにしてください。
それだけでファイルが完成します!
使い方
ファイルが完成したらこんな感じになります。
そうしたら、「Windows Power Shell」を起動します。
起動したら、下記のような画面になります。
この状態で、作成したps1ファイルを、このウインドウに重ねると
このような画面になります。
このままエンターキーを押すと、「検索する単語を入力してください」と表示されます。
今回は「当たり」と記載されたフォルダが調べたいので、「当たり」と入力します。
その後エンターキーを押すと
このように、ファイルが検索されます!
後は、それらのファイルを見に行けばよいだけです。
その他のファイルを検索する場合
今回はExcelファイルを検索しましたが、その他のファイルを検索したい場合もあります。
その方は下記の記事を参照ください。
以上、最後まで読んでいただき誠にありがとうございました。
メーカー勤務のサラリーマン。
生成AIを駆使してプログラムを作り、
日々の業務の効率化を図る。