- ベストアンサー
script(WSH)でExcelの右クリックメニューを表示する方法
- 最近Excelで右クリックメニューが表示されない問題がありました。ネットで検索し、右クリックメニュー表示マクロの実行と診断実行を行いましたが解決しませんでした。最終的にはExcel12.xlbの削除で解決しました。
- Windows-XP環境下で、script(WSH)を利用してExcelの右クリックメニューを表示する方法が知りたいです。エクスプローラの設定やファイルのリネームが関与している可能性があります。
- トラブル対策として、Excel12.xlbファイルが見つからない場合はエラーメッセージを表示し、OldExcel12.xlbファイルが存在する場合は削除してからリネームするようにしています。また、Excelを終了してから実行することを注意しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
VBSが良いのですか? ExcelVBAから実行してもxlbファイルのリネームはできると思います。 なので > ○「Excel12.xlb」をリネイムできなかった場合は「Excelを > 終了してから実行してください」と表示し終了する。 このメッセージでは正しくないかもしれません。 また、『ユーザIDを指定して実行』する必要はありますか? 実行中ユーザーのAPPDATAのパスを取得してリネーム処理したほうが良いような気がします。 それにVBSで処理するのであれば 1. の機能は必要なく、 [フォルダオプション]を変更しなくても処理できます。 一応、VBSの例だと Option Explicit Const fName = "Excel12.xlb" Const reName = "OldExcel12.xlb" Dim aPath Dim xlb aPath = CreateObject("WScript.Shell") _ .ExpandEnvironmentStrings("%APPDATA%") & "\Microsoft\Excel\" With CreateObject("Scripting.FileSystemObject") xlb = aPath & reName If .FileExists(xlb) Then .DeleteFile xlb End If xlb = aPath & fName If .FileExists(xlb) Then .GetFile(xlb).Name = reName WScript.Echo "ReName " & reName Else WScript.Echo xlb & " is Nothing" End If End With ...な感じでできるはず。 ただ、全てのバージョンに対応できるわけではありません。 『Excel12.xlb』で固定するなら、Excel2007対象です。 以下余談っぽいですが、 xlbファイルを再構築しないと『Excelで右クリックメニューが出ないトラブル』が 解消できないという状況が、そんなに頻繁に発生するとは思えないんですよね。 CommandBarのEnabledプロパティを弄くるようなマクロがあって、 その復旧に失敗してるだけっていう可能性はないですか? 右クリックメニュートラブル時に Sub test() Dim cb As CommandBar Dim ret As String For Each cb In Application.CommandBars If Not cb.Enabled Then ret = ret & vbLf & cb.Name End If Next If Len(ret) > 0 Then MsgBox "使用不可Bar" & vbLf & ret End If End Sub こんなチェックをしてみたらどうでしょう。 ビンゴだったら、 Sub test2() Dim cb As CommandBar For Each cb In Application.CommandBars Select Case cb.Name Case "Cell", "Column", "Row" cb.Enabled = True End Select Next End Sub あるいは Sub test3() Dim cb As CommandBar For Each cb In Application.CommandBars cb.Enabled = True Next End Sub こんな感じのコードで復旧します。
お礼
end-uさん、早速の回答助かりました。 早速、やってみます。 この掲示をしてから、マクロのデバッグを繰り返し、おっしゃるようにバーを消すマクロが原因であることが分かリました。そして、 For Each cb In Application.CommandBars cb.Enabled = True だけでは右クリックメニューがつかえていないのが原因であることを突き止め、 CommandBars("Cell").Reset で解決しましたが、なぜこれを実行しないと表示されないのかは分かっていません。 後半でアドバイスいただきましたVB、試してみます。 状況を表示するVBは参考になります。 丁寧なご回答ありがとうございましたm(__)m