- ベストアンサー
Excelのマクロのショートカットキーを一覧で取得する方法
Excelのマクロのショートカットキーを一覧で取得する方法 Office2003のExcelでマクロを利用しているのですが、 場当たり的にマクロをショートカットキーに対応させてきたために、 自分でも管理できず、収拾がつかなくなってしまいました。 一つ一つマクロのオプションを見ることが確実なのでしょうが、 手間がかかってしまいます。 自分で登録したマクロのショートカットキーを一覧で取得する方法はないでしょうか?
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 昔、作ったマクロで、古典的なコードです。現在は、あまり推奨されるようなコードの内容ではありませんが、良かったら試してみてください。 ツール-マクロ-セキュリティを Visual Basic プロジェクトへのアクセスを信頼する にチェックしていただいてから、以下のマクロを実行してください。 Debug.Print に出す場合は、該当部分のブロックを外してください。 今後、ショートカットを設ける場合は、Application.OnKey で設定して管理したほうが楽だと思います。 '------------------------------------------- Sub GetShortCutKeys() '現在の設定は、自ブックに限る 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へ" 'Debug.Print bufName; bufKeyName i = i + 1 bufName = "" End If LineBuf = "" Wend Close #FNo Kill DefPath & TMPF Next End With MsgBox Join(buf, vbCrLf) End Sub
お礼
返信が遅くなってしまい、すみません。 教えていただいた方法で一覧を取得することができました。 作業時間の短縮になり、助かりました。 ちなみに、「Visual Basic プロジェクトへのアクセスを信頼する」へのチェックを行わずに、教えていただいたマクロを実行したところ、「プログラミングによるVisual Basic プロジェクトへのアクセスは信頼性に欠けます」とのメッセージが出ました。 Wendy02さんがおっしゃられたように、セキュリティ的に気をつける必要があるようです。 今後は、教えていただいたApplication.OnKeyというものを調べて使いたいと思います。 ありがとうございました。