tl;dr
PowerShellで以下を実行すればよい
(New-Object -ComObject Excel.Application).Visible = $true
続きではショートカットを作ってスタートメニューやPower ToysのPower Runから呼び出せるようにしている。
背景など
Excelで重い処理を走らせていると操作を受け付けなくなるので他のファイルを触れなくなる。 別のプロセスでExcelを起動すれば独立しているので自由に利用できる。 Power Queryのエディタも複数開くことができる。
PowerShellで解決する
COMオブジェクトのことはよく知らないが、ExcelアプリケーションのCOMオブジェクトを作ったらプロセスもできるみたいで、そのオブジェクトの可視フラグを立てればよい。
以前PowerQueryのクエリを抜き出すときにこのあたりはやったことがあった。
(New-Object -ComObject Excel.Application).Visible = $true
PowerRunで呼び出す
PowerRunで > command
の形で実行してもうまくいかなかったので代替案を探した。
どうやらスタートメニューにショートカットを作れば呼べるようだったので、それにならう。
ショートカットを作るためにPowerShellスクリプトを作る。内容はこれだけ。
(New-Object -ComObject Excel.Application).Visible = $true Read-Host -Prompt "Press Enter to exit (also kills Excel)"
ファイルを右クリックでドラッグしてショートカットを作る。
プロパティを開いていじる。
- ターゲットの頭に追記する。
- 編集前
"C:\path\to\script.ps1"
- 編集後
powershell.exe -ExecutionPolicy Bypass -File "C:\path\to\script.ps1"
- 編集前
- RunのところでMinimizedを選ぶ
このショートカットを %APPDATA%\Microsoft\Windows\Start Menu\
に好きな名前で置くとスタートメニューから実行でき、PowerRunからも呼べる。
実行するとPowerShellのウィンドウが最小化されて残る。開いて何かキーを押すと終了するが、Excelも巻き込んで死ぬ。
LinuxのBashでバックグラウンドにもっていってデタッチするみたいな方法が見つけられてないのでウィンドウを最小化しとくので我慢してる。