ExcelマクロのエクスポートをPowerShellでやってみる。
マクロのエクスポートをマクロからできたんだからできて当然なんだけど、思ったほど情報がなかったので、ちょっと時間がかかった。
(前から感じていたけど、もしかして、PowerShellって流行ってないのか…。)
使い方は、対象のエクセルファイル(hoge.xls)があるフォルダに移動して
> Export-ExcelMacro.ps1 .\hoge.xls
すれば、同じフォルダにモジュールがエクスポートされる。
Join-Pathして絶対パスにしているのは、エクセルのWorkbooks.OpenやExportに渡す時には絶対パスじゃないと動いてくれないため。
Export-ExcelMacro.ps1
- param([string]$fileName)
- $filePath = Join-Path $pwd $fileName
- $excel = New-Object -ComObject Excel.Application
- $excel.Workbooks.Open($filePath) | % {
- $_.VBProject.VBComponents | % {
- $exportFileName = Join-Path $pwd ($_.Name + ".bas")
- $_.Export($exportFileName)
- }
- }
- $excel.Quit()