- ベストアンサー
マクロに割付られているショートカットの取得方法
マクロに割付られているショートカットを取得する方法を教えて下さい。 マクロにショートカットを動的に割当てるのは下記方法ですが Application.MacroOptions Macro:="Macro1", ShortcutKey:="a" 既に割り当て済みのショートカットはどのように取得するのでしょうか? 目的: 沢山のショートカットを使うのですが、キーボードが限られているので、使用場面に応じて割当てるショートカットグループを変更しようと思っています。 それで、立ち上げ時にショートカットに何が割り当てられているか表示させる為です。 よろしくお願い申し上げます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。Wendy02です。 >エラー個所:With ThisWorkbook.VBProject >実行時エラー'1004' >「プログラミングによるVisual Basicプロジェクトへの信頼性に欠けます」 それは、ツール-マクロ-セキュリティ-信頼できる発行元 □Visual Basic プロジェクトへのアクセスを信頼する。 にチェック(レ)を入れてください。
その他の回答 (1)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 これは、あくまでも、マクロ-オプションからショートカットを設定したものに対してのみ検索できます。 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
お礼
回答ありがとうございます。 実行すると下記エラーがでますがどうしてでしょうか? エラー個所:With ThisWorkbook.VBProject 実行時エラー'1004' 「プログラミングによるVisual Basicプロジェクトへの信頼性に欠けます」
お礼
実行できました。 プロパティを見るものばかりと思っていましたが、こう言った方法もあるのですね。 今回はショートカットが定義されているかどうかを調べるのが目的でしたが、これを使えば何が定義されているかも分かりますね。 詳細なご説明、ありがとうございました。