この記事を読むのに必要な時間は約 6 分です。

たくさんのファイルの中身をまとめて検索するには、Grepですよね。

 

サクラエディタや秀丸エディタなど、エディタに付いている機能の1つです。

 

でもサクラエディタなどでExcelファイルをGrepしても、まともに探すことが出来ません。
バイナリデータだから・・・。

 

なので、ExcelファイルもGrep出来るツールがあります。

 

ところが、そんな便利ツールもセキュリティにうるさい企業だと、ダウンロードして自分のPCに入れることが禁止されていたりします。

 

数千もあるExcelを一つひとつ開いて検索するのはイヤですよね。

 

そんな職場でもExcelファイルをGrepしたい!!

 

というわけで、Excel VBAのマクロでGrepツールが作れるので書いてみました。

 

Excel VBAでGrepするとこんな感じ

検索対象のフォルダとキーワードを指定して「ExcelGrep」ボタンを押してGrepします。

 

VBAでExcelGrep

 

キーワードを含むセルが一覧に表示されます。

VBAでExcelGrep

 

Grep検索マクロでやっていること

Excel Grepマクロの中でやっていることはシンプルです。

 

  1. エラーチェック
  2. 一覧をクリア
  3. 指定したパス内のExcelファイルを全検索
  4. サブフォルダも再帰的にファイル検索
  5. 見つかったExcelファイルの各シートから、キーワードに一致する文字列を全検索
  6. 見つかったら、その都度キーワードを含むセルの内容を一覧に記載
  7. 罫線を引く

 

片っ端からExcelファイルを開いて検索を繰り返して、見つかる度にセルの位置や内容を一覧に書いていく、ただそれだけです。

Grepのソースコード

シートに入れるGrepボタンと、ボタンをクリックしたとき動作するものとだけ分けて書きました。

 

このソースコードでGrepを試してみたいとき、やり方が分からない場合は

の記事が見本になります。

 

ボタンの入れ方やソースコードをどこに貼り付けるのか、参考にしてみてください。

 

シートの枠

下の表は、”Grep”シートのものです。
A1セルから貼り付けて、セルの幅を調整すれば大丈夫です。

ExcelファイルをGrepするマクロ
ルートパス
キーワード
No パス ファイル名 シート名 セル位置 セル内容

 

貼り付ければ下図のようなセルの配置になります。

VBAでExcelGrep

 

シート側

ボタンを作って右クリックから、ソースコードの表示をすれば、ボタンをクリックしたときの処理が勝手に出来ます。

 

そこから「Call grepMain」でメイン関数を呼びます。

 

Grepのメイン

基本的にそのまま貼り付けて貰えば大丈夫ですが、3か所だけ注意点があります。

 

  • 3行目にシート名を書いています。”Grep”というところが実際のシート名と一致している必要があります。
  • 15行目に検索対象のフォルダのパスを書いています。セルの位置と一致する必要があります。
  • 16行目にキーワードを書いています。これもセルの位置と一致する必要があります。

 

 

まとめ:VBAでExcelファイルをGrep検索するマクロ

ExcelファイルのGrepマクロでした。

 

誰かが作ったGrepのツールをダウンロード出来れば手っ取り早いと思いますが、セキュリティのためインターネットに繋がっていない職場もあったりします。

 

そんな時、ツールを自作出来れば便利ですよね。

 

自作と言っても、誰かが公開しているソースコードを見ながらそのまま書き込んで作るだけです。

 

よろしければ参考にどうぞ。