ユーザー登録をしたキーボードのショートカットを書き出すマクロ

先日の勉強会 にて、キーボードのショートカットの割り当て方を解説させていただきました。

そのときに出てきた質問が、「今まで自分が登録したショートカットを忘れてしまった場合どうしたらいいのか?」です。

うーん。。。

答えに窮しまして、作ったのが今回のマクロ。お題をどうもありがとうございました(笑)。

このマクロでできること

ノーマルテンプレートに登録したキーボードのショートカットを新規文書に書き出します。

以下、私が使っているマクロのショートカットの例(一部)です。

以下の表を自動で作ります。

登録したこと自体を忘れていたマクロがあって、案外楽しい発見があります。

Project.表示.SFA_スクロール_上_3 Alt+PageUp
Project.表示.SFA_スクロール_下_3 Alt+PageDown
Project.Web検索.SFA_英辞郎検索 Alt+A
Project.MWM.MWM_Antecedent Alt+F
Project.カーソルジャンプ.SFA_段落ジャンプ Alt+J
Project.標準マクロ.MWM_解除_段落_書式 Alt+P
Project.vct_Google_詳細検索.vct_Google_詳細検索 Alt+S
Project.文字入力.SFA_テキスト貼付 Alt+T
Project.表示.SFA_ズームアウト Alt+,
Project.表示.SFA_ズームイン Alt+.
Normal.NewMacros.MWM_選択したキーワードの個数を数える Alt+@

マクロの解説

赤文字部分で、キーボードに割り付けた内容をタブ区切りで書き出しています。

青文字部分で、タブ区切りの文字列を表に変換しています。

マクロ

Sub キーボードショートカットの書出し()

Dim myKB As KeyBinding
Dim myDoc As Document

CustomizationContext = NormalTemplate
Set myDoc = Documents.Add

For Each myKB In KeyBindings
With myKB
myDoc.Range.InsertAfter _
Text:=.Command & vbTab & .KeyString & vbCr
End With
Next myKB

With ActiveDocument
.Range.ConvertToTable Separator:=wdSeparateByTabs
With .Tables(1)
.Style = “表 (格子)”
.AutoFitBehavior (wdAutoFitContent)
End With
End With

End Sub

お知らせ

マクロセミナーを開催中!!
まだまだ参加者を募集中です。

2/6(月),2/20(月) ワードマクロ勉強会 in 東京
マクロが読めるようになる!
ワイルドカードを使えるようになる!

3/24(土) 『Wordマクロで作業スピードアップ』セミナー
はじめてマクロを使ってみる!
マクロをキーボードに登録して何度も使ってみる!

関連記事

マクロコードの登録方法

ツールバーのボタン登録

コメント

  • 8. Re:いまさらですが

    >ちえぞうさん

    コメントをありがとうございます。

    そうなんです。キーボードにマクロを割り当てている方にはうれしいですよね。

    あと、ぱらぱらの部分一致については、発見していただきありがとうございました。

    英日翻訳で便利です。ご活用ください。

  • 7. いまさらですが
    便利なマクロですね!
    そしていまさらながら、部分一致がPMDIとファイル名につける、というのを知りました・・・ハハハ。すいません。
    ちえぞう返信する
  • 6. Re:Re:Re:何順での出力ですか?

    水野麻子さん、kinuasaさん、

    コメント及び検証をどうもありがとうございました。
    今日は昼間外出しておりまして返信が遅れました。

    kinuasaさんに検証いただいたとおり、これは
    キー設定と関連した順序になっています。

    私も別の方法で検証をいたしました。
    KeyCodeプロパティの値の順序のようです。

    KeyCodeプロパティは、キー設定と連動しています。

    まとめはまたご報告させていただきます。
    ありがとうございます。

  • 5. Re:Re:何順での出力ですか?

    >kinuasaさん

    検証、ありがとうございました。
    どうやらキーの組み合わせ順のようですね。
    ・・・ということは、ABCよりPageUp/Downが先、カンマやアットなどの記号、ファンクションキーは後という内部的な順番がある、ということかな。

    試して頂いた例ではCtrl単独が最初、Ctrl+Shiftがファンクションキー順になっていますから、AltとCtrl各単独が混在していれば(CよりAのほうが前なので)おそらくAltが先なのでしょうね。

    いずれにしろ、使う頻度を意識してキーの割り当てを考えれば、一覧で上にまとめることができるらしいことがわかりました。
    とても有意義な検証を、ありがとうございました。

    水野麻子返信する
  • 4. Re:何順での出力ですか?
    【検証4】キーの組み合わせを変更してみる。
    ・登録順(括弧内はショートカットキー)
    1. MyMacro1(Ctrl+Shift+F9)
    2. MyMacro2(Ctrl+Shift+F5)
    3. MyMacro3(Ctrl+Shift+F1)
    ・キー出力用コードの結果:
    コマンド:Normal.Module1.MyMacro3 キーの組み合わせ:Ctrl+Shift+F1
    コマンド:Normal.Module1.MyMacro2 キーの組み合わせ:Ctrl+Shift+F5
    コマンド:Normal.Module1.MyMacro1 キーの組み合わせ:Ctrl+Shift+F9
    → Debug.Printで出力された結果から、For EachでKeyBindingオブジェクトの情報を出力した場合は”キーの組み合わせ”順で出力される模様。【検証5】確認用。
    ・登録順(括弧内はショートカットキー)
    1. MyMacro1(Ctrl+Shift+F1)
    2. MyMacro2(Ctrl+A)
    3. MyMacro3(Ctrl+Shift+F10)
    ・キー出力用コードの結果:
    コマンド:Normal.Module1.MyMacro2 キーの組み合わせ:Ctrl+A
    コマンド:Normal.Module1.MyMacro1 キーの組み合わせ:Ctrl+Shift+F1
    コマンド:Normal.Module1.MyMacro3 キーの組み合わせ:Ctrl+Shift+F10
    → 上記検証4と同様、”キーの組み合わせ”順で出力された。以上のようになりました。
    なお、各検証は事前にすべてのキー設定を初期化してからショートカットキーの登録作業を行いました。

    kinuasa返信する
  • 3. Re:何順での出力ですか?
    【検証2】登録する順番を変更してみる。
    ・登録順(括弧内はショートカットキー)
    1. MyMacro3(Ctrl+Shift+F3)
    2. MyMacro2(Ctrl+Shift+F2)
    3. MyMacro1(Ctrl+Shift+F1)
    ・キー出力用コードの結果:
    コマンド:Normal.Module1.MyMacro1 キーの組み合わせ:Ctrl+Shift+F1
    コマンド:Normal.Module1.MyMacro2 キーの組み合わせ:Ctrl+Shift+F2
    コマンド:Normal.Module1.MyMacro3 キーの組み合わせ:Ctrl+Shift+F3
    → 出力されるのは登録順ではない。【検証3】マクロ名前を変更してみる(MyMacro3 → ABC)
    ・登録順(括弧内はショートカットキー)
    1. MyMacro1(Ctrl+Shift+F1)
    2. MyMacro2(Ctrl+Shift+F2)
    3. ABC(Ctrl+Shift+F3)
    ・キー出力用コードの結果:
    コマンド:Normal.Module1.MyMacro1 キーの組み合わせ:Ctrl+Shift+F1
    コマンド:Normal.Module1.MyMacro2 キーの組み合わせ:Ctrl+Shift+F2
    コマンド:Normal.Module1.ABC キーの組み合わせ:Ctrl+Shift+F3
    → 出力されるのはマクロ名順ではない。
    kinuasa返信する
  • 2. Re:何順での出力ですか?

    きぬあさです。

    > この一覧は何順で出力されるのでしょうか?コマンド名順?キー順?

    面白そうだったので調べてみました。

    【登録するマクロ】
    ・MyMacro1
    ・MyMacro2
    ・MyMacro3

    【キー出力用コード】
    Sub OutputKeyBinding()
    Dim kb As Word.KeyBinding

    Application.CustomizationContext = NormalTemplate
    For Each kb In Application.KeyBindings
    Debug.Print “コマンド:” & kb.Command, “キーの組み合わせ:” & kb.KeyString
    Next
    End Sub

    【検証1】
    ・登録順(括弧内はショートカットキー)
    1. MyMacro1(Ctrl+Shift+F1)
    2. MyMacro2(Ctrl+Shift+F2)
    3. MyMacro3(Ctrl+Shift+F3)
    ・キー出力用コードの結果:
    コマンド:Normal.Module1.MyMacro1 キーの組み合わせ:Ctrl+Shift+F1
    コマンド:Normal.Module1.MyMacro2 キーの組み合わせ:Ctrl+Shift+F2
    コマンド:Normal.Module1.MyMacro3 キーの組み合わせ:Ctrl+Shift+F3

    kinuasa返信する
  • 1. 何順での出力ですか?
    こんにちは。
    これ、とても便利なマクロですね。
    (こちらの記事からリンクさせて頂きました。)先日Normal.dotが壊れてショートカットと一部のマクロとが白紙に戻ってしまい、自動生成されたバックアップを使いながら直していく、ということをしました。そういうときも、事前に出力した一覧があると漏れがなくていいと思います。ところで、この一覧は何順で出力されるのでしょうか?コマンド名順?キー順?
    サンプルを見てもわからなかったので、確認です。

    水野麻子
トップへ戻る