• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:script(WSH)でExcelの右クリックメニューを表示するマクロについて)

script(WSH)でExcelの右クリックメニューを表示する方法

このQ&Aのポイント
  • 最近Excelで右クリックメニューが表示されない問題がありました。ネットで検索し、右クリックメニュー表示マクロの実行と診断実行を行いましたが解決しませんでした。最終的にはExcel12.xlbの削除で解決しました。
  • Windows-XP環境下で、script(WSH)を利用してExcelの右クリックメニューを表示する方法が知りたいです。エクスプローラの設定やファイルのリネームが関与している可能性があります。
  • トラブル対策として、Excel12.xlbファイルが見つからない場合はエラーメッセージを表示し、OldExcel12.xlbファイルが存在する場合は削除してからリネームするようにしています。また、Excelを終了してから実行することを注意しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • end-u
  • ベストアンサー率79% (496/625)
回答No.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 こんな感じのコードで復旧します。

narin_san
質問者

お礼

end-uさん、早速の回答助かりました。 早速、やってみます。 この掲示をしてから、マクロのデバッグを繰り返し、おっしゃるようにバーを消すマクロが原因であることが分かリました。そして、   For Each cb In Application.CommandBars     cb.Enabled = True だけでは右クリックメニューがつかえていないのが原因であることを突き止め、 CommandBars("Cell").Reset で解決しましたが、なぜこれを実行しないと表示されないのかは分かっていません。  後半でアドバイスいただきましたVB、試してみます。  状況を表示するVBは参考になります。 丁寧なご回答ありがとうございましたm(__)m

関連するQ&A