PowerPoint VBA
パワーポイントのスライドショーで「スライドショーの終了」を無効にしたうえで、マクロを登録したコンテキストメニューを追加したいと考えています。
右クリックのコンテキストメニューの操作は以下①のコードで可能でしたが、スライドショーのショートカットツールバーの操作方法がわかりません。
CommandBarsのコレクションには、ショートカットツールバーに相当するアイテムが見当たらないのですが、Commandbars以外にショートカットメニューのオブジェクトが存在するのでしょうか?
コンテキストメニューを表示したらcontorolのプロパティをdebag.printするようなコード(②③)を書けば判明するかとも考えましたが、それもうまくいきません。(Menu Bar とだけでます)
Windows10 office365 office2013
①
Sub Command_Custom_false() Dim Mymenubar As CommandBar Set Mymenubar = Application.CommandBars("Slide Show Browse") Mymenubar.Controls("スライド ショーの終了(&E)").Enabled = False End Sub
②クラスモジュールに記述
Option Explicit Public WithEvents App As PowerPoint.Application Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean) '※ 図形やスライド上で右クリックしたときに発生するイベント Cancel = True Debug.Print Application.CommandBars.ActiveMenuBar.Name MsgBox "WindowBeforeRightClick" End Sub
③標準モジュールに記述
Option Explicit Private cls As Class1 Public Sub Sample() Set cls = New Class1 Set cls.App = Application End Sub
追記
Slide Show は3つあるみたいですね。
↓で、メニューが追加できるCommandBarに全部追加してみました。
Slid Showで操作できるのは、全画面表示のスライドショーと、発表者ビューの「・・・」ボタン
のようです。
やりたいことは、全画面表示の「・・・」ボタンのメニューをEnableプロパティを書き変えたり、ボタンを追加したりしたいです。
↓のコードで、captionが「スライド ショーの終了(&E)」のアイテムは3つありましたが、「スライド ショーの終了」のアイテムは無かったのでやはりCommandBarsではないのでしょうか...
または他にもエラーでボタン追加できなかったCommandBarsはあったので、itemが動的に変化するものがあるんでしょうか...
謎です。。。
vba
1Sub tuika() 2 Dim CommandBarItem As CommandBar 3 Dim CommandBarControlItem As CommandBarControl 4 5 'ずっと残るのでリセット 6 For Each CommandBarItem In Application.CommandBars 7 For Each CommandBarControlItem In CommandBarItem.Controls 8 On Error Resume Next: CommandBarControlItem.Reset: On Error GoTo 0 9 Next 10 On Error Resume Next: CommandBarItem.Reset: On Error GoTo 0 11 Next 12 13 Dim MyAddMenu As CommandBarButton 14 15 For Each CommandBarItem In Application.CommandBars 16 17 On Error Resume Next 18 Set MyAddMenu = CommandBarItem.Controls.Add 19 MyAddMenu.Caption = "ID=" & CommandBarItem.Id 20 21 On Error GoTo 0 22 If MyAddMenu Is Nothing Then 23 a = a & CommandBarItem.Name & ",ID=" & CommandBarItem.Id & ",notAdd" & vbCrLf 24 Else 25 a = a & CommandBarItem.Name & ",ID=" & CommandBarItem.Id & vbCrLf 26 End If 27 28 For i = 1 To CommandBarItem.Controls.Count 29 Set Myitem = CommandBarItem.Controls.item(i) 30 a = a & " " & Myitem.Caption & ",Visible=" & Myitem.Visible & ",Id=" & Myitem.Id & ",Type=" & Myitem.Type & vbCrLf 31 Next i 32 Set MyAddMenu = Nothing 33 Next 34 35Dim fso As Object 36Set fso = CreateObject("Scripting.FileSystemObject") 37Dim ts As Object 38Mypath = ActivePresentation.Path 39Mypath = Mypath & "\" & "menu.txt" 40Set ts = fso.CreateTextFile(Mypath, True, True) 41ts.Write (a) ' 書き込み 42ts.Close ' ファイルを閉じる 43End Sub
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/14 12:17
2021/04/15 00:57
2021/04/15 03:26
2021/04/15 04:14
2021/04/17 00:12
2021/04/17 00:47
2021/04/17 09:15