セルを編集しようとしたらどっか行った
皆さんはそのような経験あるでしょうか?私はしょっちゅう起こしてイライラしてました。
そんなときの解決方法を探すためネットの海に潜ると下記のような記事を見つけました。
おお、解決やな。
だがしかし、記事にある通りフィルハンドルの機能を失うことになるという大きなデメリット...
設定変更するの結構手間だし、F2押すのは慣れないので...
設定を変更するショートカットを作ろう!
ショートカット作成
ということで選ばれたのは bat と powershell.
以前にexcelファイルが入ったフォルダをまとめてPDFに変換をするショートカットを作ったことがあったので行けるかなと思いコーディング開始!
$excelRunning = Get-Process -Name "EXCEL" -ErrorAction SilentlyContinue
if ($null -eq $excelRunning) {
$excelApp = New-Object -ComObject Excel.Application
$newexcel = $true
} else {
$excelApp = [Runtime.InteropServices.Marshal]::GetActiveObject("Excel.Application")
$newexcel = $false
}
$currentSetting = $excelApp.CellDragAndDrop
if ($currentSetting -eq $true) {
$excelApp.CellDragAndDrop = $false
} else {
$excelApp.CellDragAndDrop = $true
}
if( $newexcel -eq $false) {
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($excelApp) | Out-Null
Remove-Variable excelApp } else {
$excelApp.Quit()
[System.Runtime.InteropServices.Marshal]::ReleaseComObject($excelApp) | Out-Null
Remove-Variable excelApp }
解説
1行目でExcelが実行中かを確認します。実行中でない場合エラーになってしまうため
-ErrorAction SilentlyContinue
を書いてエラーを無視かつ出力もなしで$excelRunning
はnull
になります。
3行目からのif文はexcelが起動していない場合は起動する。すでに起動している場合はそのまま利用(今回の場合は設定の変更のため起動していればなんでもいい)する。
今回変更する設定のCellDragAndDrop
がonかoffかをbooleanで判定し逆にする。
最後のif文は新しく起動した場合タスクの終了をするためのものです。
起動した状態でしか設定変えたと思うことないでしょうけど一応。
bat作成
設定変更できるものの即実行じゃないと、ということでpowershellを呼び出すbatも作ります。
といってもこれだけです。
@echo off
powershell -ExecutionPolicy Unrestricted -File %~dpn0.ps1 %*
exit
同じフォルダに同じ名前のbatとps1ならコピペでOK。
わからないとか、できないなら絶対パスで。
ちなみに-ExecutionPolicy
の変更はこのbatの実行終了までしか有効じゃなかったはずなのでご安心を。
今回変更した設定↓
ほかの設定も探せば変えられると思うので設定したいものがあればぜひ。
以上powershell と バッチファイルを使用してExcelの設定を変更する方法でした。