おはようございます、すぎやまです。
この記事では、フォルダ内にあるWordファイルの中身を検索し、探しているファイルを簡単に見つける方法を紹介します。
この記事を読めば、いちいちファイルを開いて内容を確認する手間がなくなります!
こんな方におすすめ
- あのファイルどこいったっけ…という方
- ChatGPTを使ったけど、機能しなかった方
仕事や作業をしていると、日々様々なファイルを作成します。
そしてそれらを後々確認したり、あるいは使用して解析等行うことも多々あります。
その時、開くファイルをすぐに判断できるなら問題ないですが、そうでない場合、中身を開いて確認してを繰り返す必要があります。
そうなると時間も手間もかかるので、今回はフォルダにある全てのWordファイルの内容を検索するps1ファイルを紹介します。
この記事ではコードを紹介しますので、それをコピーして張り付けるだけでps1ファイルが作れます。
それではどうぞ!
機能紹介
このファイルは、フォルダ内にあるWordファイルの内容を検索するファイルです。
例えば、フォルダにこんな感じでwordファイルがあるとします。
このとき、テスト1,2,3,5,8の中には「当たり」と書かれていて、それ以外には「外れ」と書かれています。
このとき、このファイルを使うと
このように内容の検索ができます!
さっそく作り方を説明します!
ps1ファイルの作り方・使い方
ps1ファイルの作り方は、この記事を参照ください。
図解付きでps1ファイルの作り方と使い方を紹介しています!
コード紹介
今回使用したファイルの中身はこんな感じです!
# COMオブジェクトを作成してWordを起動
$word = New-Object -ComObject Word.Application
$word.Visible = $false # Wordウィンドウを非表示にする
# スクリプトファイルのディレクトリをカレントディレクトリに設定する
Set-Location -Path $PSScriptRoot
# 検索する単語の入力
$keyword = Read-Host "検索する単語を入力してください"
# Wordファイル内のテキストを検索する
$files = Get-ChildItem -Path . -Recurse -Filter *.docx
foreach ($file in $files) {
$document = $word.Documents.Open($file.FullName)
foreach ($paragraph in $document.Paragraphs) {
$text = $paragraph.Range.Text
if ($text -match $keyword) {
Write-Host "File: $($file.FullName)"
Write-Host "--------------------------"
}
}
$document.Close()
}
# Wordアプリケーションを終了
$word.Quit()
[System.Runtime.Interopservices.Marshal]::ReleaseComObject($word) | Out-Null
Remove-Variable word
Write-Host "検索が完了しました。"
この上のコードをコピーして、テキストに張り付けてps1ファイルにしてください。
それだけでファイルが完成します!
使い方
ファイルが完成したらこんな感じになります。
そうしたら、「Windows Power Shell」を起動します。
起動したら、下記のような画面になります。
この状態で、作成したps1ファイルを、このウインドウに重ねると
このような画面になります。
このままエンターキーを押すと、「検索する単語を入力してください」と表示されます。
今回は「当たり」と記載されたフォルダが調べたいので、「当たり」と入力します。
その後エンターキーを押すと
このように、ファイルが検索されます!
後は、それらのファイルを見に行けばよいだけです。
その他のファイルを検索する場合
今回はExcelファイルを検索しましたが、その他のファイルを検索したい場合もあります。
その方は下記の記事を参照ください。
以上、最後まで読んでいただき誠にありがとうございました。
メーカー勤務のサラリーマン
日々の業務を効率的に進めるため、
慣れない々プログラミングを勉強中。
AIを活用した日々の作業削減を目論みブログを開設。