こんばんは。
これは、あくまでも、マクロ-オプションからショートカットを設定したものに対してのみ検索できます。
Sub GetShortCutKeys()
'v.2659901_01
'現在の設定は、自ブックに限る
Dim DefPath As String
Dim FNo As Integer
Dim LineBuf As String
Dim i As Integer
Dim buf() As String
Dim bufName As String
Dim bufKeyName As String
Dim vbc As Object
Const AT1 As String = "Attribute "
Const AT2 As String = "VB_Invoke_Func ="
Const TMPF As String = "Temp1.bas" 'テンポラリ出力ファイル
DefPath = ThisWorkbook.Path & "\"
With ThisWorkbook.VBProject
For Each vbc In .VBComponents
.VBComponents(vbc.Name).Export Filename:=DefPath & TMPF
FNo = FreeFile()
Open DefPath & TMPF For Input As #FNo
While Not EOF(FNo)
Line Input #FNo, LineBuf
If InStr(1, LineBuf, "Sub", vbTextCompare) = 1 Then
bufName = Mid$(LineBuf, InStr(LineBuf, "Sub") + 4)
End If
If InStr(LineBuf, AT1) = 1 And InStr(LineBuf, AT2) > 0 Then
ReDim Preserve buf(i)
bufKeyName = " : Ctrl + " & Mid$(LineBuf, InStrRev(LineBuf, "=") + 3, 1)
buf(i) = bufName & bufKeyName '配列出力
'Debug.Print bufName; bufKeyName 'Debug.Printへ"
i = i + 1
bufName = ""
End If
LineBuf = ""
Wend
Close #FNo
Kill DefPath & TMPF
Next
End With
MsgBox Join(buf, vbCrLf)
End Sub
お礼
実行できました。 プロパティを見るものばかりと思っていましたが、こう言った方法もあるのですね。 今回はショートカットが定義されているかどうかを調べるのが目的でしたが、これを使えば何が定義されているかも分かりますね。 詳細なご説明、ありがとうございました。