ExcelでどのくらいVBA使って開発したんだろう・・・?
自分のパソコンの中にどのくらいのExcelファイルがあって、そのうちどのくらいがVBAを使っているんだろう?
ふと気になったので、調べてみました。
(PowerShellを使って、xls*という拡張子のファイルがどのくらいあるか調べてみました。)
【結果】xlsmのExcelファイルが多かった
PowerShellでコマンドを実行した結果、こんな感じで表示されました。
やっぱりマクロ有ファイルが一番多かった。
このように拡張子ごとに、どのくらいの割合でファイルがあるのかパッと調べられると便利ですよね。
え?そんな需要ない?
いや、きっとできれば便利ですし、ぜひ調べてみてください!!
気を取り直して・・・。
様々なオブジェクトをグルーピングするときは、Group-Objectコマンドレットを使うと簡単に調べることができます。
Group-Objectコマンドレットを使ったワンライナー
Get-ChildItem、Where-Object、Group-Objectコマンドレットを組み合わせた、Excelファイルの拡張子ごとの数を調べるワンライナーです。
$groupObj=Get-ChildItem-Path 'C:\' -Recurse -ErrorAction SilentlyContinue|Where-Object{$_.Extension -like '.xls*'}|Group-Object -Property Extension
まず、Get-ChildItemコマンドレットでCドライブを再帰的に調べます。
Get-ChildItemコマンドレットでは、システムファイル等のファイルにアクセスしようとすると、権限によってはアクセスを拒否されることがあるので、エラーメッセージを抑制するため、
-ErrorAction SilentlyContinueを付与しています。
次にWhere-Objectコマンドレットで拡張子を絞ります。
ワイルドカードを使ってxlsを含む拡張子に絞っています。
最後にGroup-Objectコマンドレットに結果を渡します。
Group-Objectコマンドレットでは、グルーピングしたいプロパティを-Propertyパラメータで指定します。
ここではExtension、つまり拡張子でグルーピングしています。
これで拡張子ごとの数が調べられました!
終わりに
Excelの拡張子ごとの数を調べるワンライナーの紹介でした。
エントリー的には、ネタの域を出ないですが、まじめな話Group-Objectコマンドレットを使いこませれば、Excel不要でPowerShell上で複雑な処理が実現できます。
その辺は別の記事で深堀したいと思います。
というわけで、ここまでお読みいただき、ありがとうございました。