先日の勉強会 にて、キーボードのショートカットの割り当て方を解説させていただきました。
そのときに出てきた質問が、「今まで自分が登録したショートカットを忘れてしまった場合どうしたらいいのか?」です。
うーん。。。
答えに窮しまして、作ったのが今回のマクロ。お題をどうもありがとうございました(笑)。
<目次>
このマクロでできること
ノーマルテンプレートに登録したキーボードのショートカットを新規文書に書き出します。
以下、私が使っているマクロのショートカットの例(一部)です。
以下の表を自動で作ります。
登録したこと自体を忘れていたマクロがあって、案外楽しい発見があります。
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マクロで作業スピードアップ』セミナー
はじめてマクロを使ってみる!
マクロをキーボードに登録して何度も使ってみる!
関連記事
-
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と同様、"キーの組み合わせ"順で出力された。以上のようになりました。
なお、各検証は事前にすべてのキー設定を初期化してからショートカットキーの登録作業を行いました。 -
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
→ 出力されるのはマクロ名順ではない。 -
2. Re:何順での出力ですか?
きぬあさです。
> この一覧は何順で出力されるのでしょうか?コマンド名順?キー順?
面白そうだったので調べてみました。
【登録するマクロ】
・MyMacro1
・MyMacro2
・MyMacro3【キー出力用コード】
Sub OutputKeyBinding()
Dim kb As Word.KeyBindingApplication.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
コメント