« 欲しいコードを、適当にあたりをつけて探す例 | トップページ | 速度と効率10倍アップ 実務翻訳者のためのWordマクロ 基礎の基礎 »

2009年8月 8日 (土)

コマンドバーの名前を取得するマクロの解説

先日のブログでKonnoさんからコマンドバーの日本語名と英語名を取得するプログラムを教えていただきました。

Konnoさん、改めてありがとうございます。

こういうものを見ると、プログラマの思考に触れられて面白いですね。

わからなかったら、全部書きだしてみれば?というもの。(だと思います。)

これ、コンピュータだからできる発想ともいえると思います。

普段の仕事で、とにかくわかんないので全部手当たり次第に書き出してみて、それから考えましょう。ってあんまりやらないですよね。とくに、調べて書き出すのが手間だと、面倒ですよね。

そういう意味で、プログラムって面白いですよね。

自分の仕事に、この発想を使ったら、違う結果が出るかも。うまく応用したいものです。


プログラムであれば、正確な命令文を書いておけば、忠実に同じ作業を繰り返してくれる。

自分でやるんだったら絶対にできない(疲れる、間違える、飽きる)ことを黙々と、しかも短時間(多くの場合一瞬)で、正確にこなしてくれるのですから。

VBAはいい相棒ですね。


話がずれましたが、今回のコマンドバーの名前を取得するマクロも、上記の「とりあえず書いてみれば?」に似ているかなと思いました。

今後、マクロのコードに迷ったら、この発想を使わせていただきたいなと思いました。

●プログラム
いただいたマクロに、説明のため、行番号とスペースを入れました。

Sub GetCommandBarNames()

   Dim cBar As CommandBar
   Dim cBarNameJ As String
   Dim cBarName As String
   Dim cBarIndex As Integer

10  For Each cBar In CommandBars
20   cBarName = cBar.Name
30   cBarNameJ = cBar.NameLocal
40   cBarIndex = cBar.Index
50   Selection.TypeText (cBarIndex & vbTab & cBarName & vbTab & cBarNameJ & vbCr)
60  Next cBar

End Sub

●プログラム翻訳

プログラムの冒頭で使う変数のデータ型を定義しています。

cBar は、CommandBar として定義。
コマンドバーというのは、ツールバー、メニューバー、右クリックメニューを一つに統合したものだそうです。

この言葉を知っていたら、僕もヘルプである程度答えに近づけたのかも。

cBarNameJ は、日本語名称の格納用として文字列(String)として定義。

cBarName は、 英語名称の格納用として文字列(String)として定義。

cBarIndex は、メニューバーのインデックス番号の格納用として整数( Integer)として定義。

です。

10行と60行で、For Nextの文章です。Eachを使っているので、「コマンドバーのそれぞれに対して行われる」という意味になります。

なので、コマンドバーのそれぞれ一つずつに対して実行する処理が、ForとNextではさまれた20行から50行に記載されています。

20行から40行で、コマンドバーの一つずつに対して、英語名称( cBar.Name)、日本語名称(cBar.NameLocal)、インデックス番号(cBar.Index)を取得して、データ変数に代入(格納、もしくは一時保存という意味)しています。

50行で、Selection.TypeTextのコマンドを使って、取得した情報を現在開いている文書に書き出す作業をしています。

書き出す内容は括弧内の情報ですね。

vbTab はタブ、vbCrは改行です。

|

« 欲しいコードを、適当にあたりをつけて探す例 | トップページ | 速度と効率10倍アップ 実務翻訳者のためのWordマクロ 基礎の基礎 »

マクロプログラム」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/519619/45864453

この記事へのトラックバック一覧です: コマンドバーの名前を取得するマクロの解説:

« 欲しいコードを、適当にあたりをつけて探す例 | トップページ | 速度と効率10倍アップ 実務翻訳者のためのWordマクロ 基礎の基礎 »