« 2009年7月 | トップページ | 2009年9月 »

2009年8月の8件の記事

2009年8月30日 (日)

図表番号を挿入する(Seqフィールドの利用)

フィールドを利用して図表番号を挿入するプログラムです。

紹介するのは、図番の挿入マクロと、図番を相互参照するマクロです。

▼作成背景

ワードで文書をつくるときに図1,図2,図3,、、と図を表示する場合があります。

ところが、文書を作っているある時点で、図2と図3の間に別の図を入れることってありますよね。

そのときに、現在の図3以降の全ての図の番号を振り直すのは非常に手間です。

いま、マクロの取説を書いているのですが、上記のような作業があまりにも面倒だったために何かよい方法がないかと思って作ったのがこのマクロです。

「連番のフィールド」を使えば、図3以降の図番のずれを全て自動で修正してくれます。

また、「相互参照のフィールド」を使えば、「図4に示すように」などの参照して書かれた文章も、図番を挿入してずれた場合に「図に示すように」と更新してくれますので非常に便利です。

▼参照した資料

エンジニアのためのWord再入門講座」です。

文章を書くときの目的にそって、細かなワードの設定・使い方が説明されている良書です。

本書のP.103~108の記事を参考にしてマクロを記録し、その後自分の利用方法に沿ったプログラムに修正しました。

最終的には、ヘルプをみてプログラムを作成しました。

以下のプログラムをツールバーのボタンに登録すると作業がかなり楽になります。

ボタンの作成方法は、こちら

▼プログラム

「図番挿入」と「図番の相互参照」の二つのプログラムがあります。

Sub 図番挿入()

10    Selection.InsertCaption _
      Label:="図"

20    Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

30    Selection.TypeText Text:=" "

40    ActiveDocument.Fields.Update
             
End Sub

Sub 図番の相互参照()

      Dim Message As String
      Dim Title As String
      Dim MyValue As Integer

10      On Error GoTo 図番の相互参照_Error

      'メッセージ、タイトルの設定
20    Message = "図面番号を入力してください。"
30    Title = "図の相互参照"

      ' 図番を取得するインプットボックスを表示
40    MyValue = InputBox(Message, Title)

50    Selection.InsertCrossReference ReferenceType:="図", _
      ReferenceKind:=wdOnlyLabelAndNumber, _
      ReferenceItem:=MyValue

60    ActiveDocument.Fields.Update

70       On Error GoTo 0
80       Exit Sub

図番の相互参照_Error:

90        If Err = 4198 Then End

End Sub

▼プログラム解説

<図番挿入のプログラム>

10行:InsertCaptionで、図番を挿入します。

自動記録をすると、様々なプロパティが記録されますが、今回はLabelというプロパティだけ必要なので、その他のプロパティは削除しました。

20行:中央揃え

30行:図○のあとに全角スペースを挿入(これは、私が書いているマニュアルのスタイルです)

40行:フィールドの数値の更新。これをやらないと、相互参照した図番が更新されません。重要。

<図番の相互参照>

20行~40行:参照したい図番を入力

50行:フィールドを挿入

60行:フィールドの更新

※図番の相互参照_Error (エラー処理について)

上記の通り、20行~40行にてinputboxで参照先の図の番号を指定します。

この際に、指定した図番の図が文書中に存在しない場合(参照先がない図番を指定した場合)に、エラー番号4198が出て、エラー処理されます。

| | コメント (1) | トラックバック (0)

メルマガの登録

マクロのテンプレート更新情報や、ブログ記事の紹介を目的とした月刊のメルマガです。

どうぞご登録ください。

メルマガのサンプルはこちら

購読の登録や解除は、以下のフォームからできます。

メルマガ購読・解除
 

「まぐまぐ!」のメルマガに登録されたことがない方のために、簡単に説明します。

「まぐまぐ!」は、メルマガの発行代行サービスをしています。

まぐまぐ!自身の説明ページでは、「まぐまぐ!は、インターネットの本屋さんです。」と定義しています。

私は、このまぐまぐ!のサービスを利用して、みなさんに「一斉に」メールを送ることができます。

また、メルマガの発行人である私は、みなさんの個別のメールアドレスを見ることはできません。

よって、「どなたが登録されているのか」は私には知ることはできませんし、また、私のメールアドレスから登録者さんに「個別に」メールすることはできません。

メルマガの発行目的は、上記の通りテンプレートの更新情報とブログの記事の紹介です。

多少、自分の近況を書いたりするかもしれませんが、このメルマガがうっとおしくなってきたら、登録の解除はご自由にできますので、ご判断ください。

| | コメント (0) | トラックバック (0)

2009年8月22日 (土)

メルマガを発行します

暑い日が続きますね。

みなさんいかがお過ごしですか?

このたび、メルマガを発行することにしました。

http://www.mag2.com/m/0001007563.html

このブログと連携したものです。

1週間くらい前に上記のサイトを作成したのですが、今日までに2名の読者の方に登録をいただきました。

ありがとうございました。

このメルマガの目的は、私からみなさんに直接情報をお知らせすることです。

想定している意図は、私が公開しているマクロのテンプレートにバグが見つかったときに、このメルマガに登録している方には、私からメールでバグの内容や新しいテンプレートを紹介する、ということです。

公開中のマクロを使っていただいている方には、誤動作のない、もしくはより使い勝手のよいマクロをいち早く提供させていただきたく思うので、このメルマガでご連絡しようと思います。

便利だなと思われた方、ご登録ください。

| | コメント (0) | トラックバック (0)

2009年8月16日 (日)

エンジニアのためのWord再入門講座(書籍紹介)

こんにちは。

今日で夏休みが終わりです。あっという間でしたね。

さて、今日はワードに関する書籍の紹介です。

この書籍は、プログラマ兼テクニカルライターである著者が、「読みやすく、メンテナンス性の高いドキュメント」の作成方法を説明しています。

これは文章の作成方法指南書ではありません。

文章術をごらんになりたい方は、以下の書籍がいいかと思います。

この本は、エンジニア(プログラマ)向けに書かれたものですが、一般の技術仕様書や技術指示書、また社内や客先への説明資料などを作成される方にも役に立つ「文章作成上のノウハウ」が書かれています。

例文(プログラマ向けです)があり、それを添削・説明しているので、どのように自分の意図を伝えるのがビジネス/技術文書を作成するうえで大切か理解しやすいと思います。

▼『Word再入門講座』

話を元に戻して、『Word再入門講座』ですが、こちらには、読みやすくするための体裁/見栄えを整える方法がひたすら書かれています。

それを、ワードの機能を徹底的に活用することで達成しようとしています。

著者の経験に基づく解説書なので、単純な機能紹介というよりや、「わかりやすく、メンテナンス性のある文書」を作成するために、ワードをどう使いこなすか?というスタンスで書かれています。

そういう意味では、『仕事術』という観点からも本書を読むことができると思います。

同世代のビジネスマンの知恵を見せていただいて、すごいなと思いながら楽しむのも、本書の読み方のひとつだと思います。

なお、解説に使われているワード画面はWord2003とWord2007との両方なので、どちらのユーザーにもわかりやすいと思います。

▼マイツールバーをつくる!

P30から紹介されているワードの初期設定方法において、編集領域を広く使うためにツールバーのカスタマイズが提案されています。

これをみて、早速つくりました!

今まで、私のワード画面には、5段にもおよぶツールバーが常時表示されており、はっきりいって編集領域がかなり圧迫されていました。

「編集領域を広く使う」という発想をいただいて、ツールバーの表示を目的に応じてオン・オフするマクロをすぐに作って、常時表示するマクロツールバーを1段にしました。

また、「標準」と「書式設定」のデフォルトのツールバーを1つのツールバーにまとめることにしました。

よって、合計2段のツールバーで作業ができるようになりました。

必要のないボタンを全て削除したので、見た目もすっきりするし、編集領域が広くて文字を大きく表示できてうれしいですね。

Toolbar うまく見えないかもしれませが、左図が今おきにいりのツールバーの仕様です。

これは自分の好みなので、みなさんには役立たない可能性が高いですが、参考までにご覧ください。

「mytoolbar.dot」をダウンロード

これをスタートアップフォルダに入れます。

あとは、メニューの表示>ツールバー>から「標準」と「書式設定」のチェックをはずして、それぞれのツールバーの表示をオフにしましょう。

▼スタイルを活用する

今までよくわからないまま放置してきた「スタイル」を、ようやくこの本で勉強しなおしました。

こういうワードの機能を学ぶには、勉強のための文書作成はさけたほうがいいと思います。モチベーションがわきませんから。

とにかく、趣味でも仕事でも、なんでもいいので、具体的に書いている文書があって、その見せ方を変えるためにワードの機能をいじるほうが楽しいですよね。

最近は、マクロの説明書をワードで書いたりしていたので、その作成のために「スタイル」の活用をしてみました。

スタイルってとっつきにくいと思っていましたが、本書では比較的細かく説明がなされており、推奨する使い方(著者の使い方)が提案されているためにより分かりやすいと思います。

つまり、機能の羅列とそれぞれの説明ではなくて、「~することをお勧め」とか「●●の使用やカスタマイズは避けてください」などと指針が示されています。

これはありがたいですね。

スタイルを使い始めると、手放せなくなります。

一度スタイルに登録してしまえば、文書全体の書式を統一するのがすごく簡単です。

詳細は本書でご確認ください。

▼告知(いつになるかわかりませんが)

1年位前に着手した「スタイル」を使った作りかけのマクロがあります。

実は、このマクロを完成させるためにスタイルを知りたくて本書を読んでみました。

いいものができたらこのブログで紹介したいと思います。

| | コメント (0) | トラックバック (0)

2009年8月 9日 (日)

ユーザーフォームが立ち上がったときに、所定のテキストボックスの文字を選択する

ユーザーフォームを作成しました。

このユーザーフォームが立ち上がったときに、所定のテキストボックス(文字を入力できる欄)の文字が選択されている状態にするコードです。

ユーザーフォームを開くたびに、テキストボックスに記入されている数字を変更したいと思っています。

そのため、ユーザーフォームが立ち上がったときには、すでに数字が選択されている状態にして、あとはキーボードから数字を入力してEnterキーを押せばプログラムが実行されるような操作をしたいと思いました。

こうすれば、テキストボックスにカーソルを移動するためにマウスを使わなくてもよいし、さらに、テキストボックスの文字列(数字)を選択する必要もありませんから、操作のストレスが少し減ります。

Inputbox 左の画像のとおり、インプットボックスにデフォルトで設定された文字列(左の場合には数字の1)が、インプットボックスが表示されたときにすでに選択された状態になっているのと同じことをしたいと思いました。

●プログラム

Private Sub UserForm_Initialize()

10        With TextBox1
20            .Text = "sample text"
30            .SetFocus
40            .SelStart = 0
50            .SelLength = Len(.Text)
60        End With

End Sub

●プログラム翻訳

ユーザーフォームの名前をUserForm1とします。また、その中にあるテキストボックスをTextBox1とします。

Private Sub UserForm_Initialize()は、ユーザーフォームを開く場合に、ユーザーフォームの初期設定をするプロシージャを示します。

10行と60行: 20行から50行までの対象をTextBox1に定めています。

20行: テキストボックスに入力する文字列。仮に"sample text"としました。

30行: .SetFocusメソッドにてカーソル位置をこのTextBox1に移します。今回は、テキストボックスなのでカーソルが見えますが、対象がオプションボタンである場合にはカーソルは見えません。操作の対象として、オプションボタンが選ばれた状態になるというわけです。

VBAでは、上記のようなことを、「フォーカスを移動させる」といいます。

40行: SelStart でテキストボックス内の最初のカーソル位置を設定。0の値なので、テキストボックス内の一番左端にカーソルが移動します。

50行: SelLength でテキストボックス内の最後のカーソル位置を設定。Len(.Text)とすることで、テキストボックス内の文字列の文字数分を最後のカーソル位置としています。結果として、テキストボックス内の文字列が選択されることになります。

●情報源

この方法がわからなかったので、グーグルのニュースグループに質問を投稿して教えてもらいました。こちらをご参照。

ちなみに、なぜか、私が作りこんだユーザーフォームでは、上記のコードはうまく動かないのです。

原因は不明でしたが、通常はうまく行くはずですので、ご心配なく。

| | コメント (0) | トラックバック (0)

2009年8月 8日 (土)

速度と効率10倍アップ 実務翻訳者のためのWordマクロ 基礎の基礎

ついに出ました。マクロの記録を徹底的に解説したマクロ解説書。

こちらです。

内容紹介。かなり長文のレビューですね。

この本は、私の師匠である水野麻子さんが書いたものなので、私にとってはすごく理解しやすいものでした。

その分、「わかる、わかる、そうだよね」のコメントが繰り返されています。

そういう背景を踏まえて、お読みください。

●「自分で作るWordマクロ(1)(2)」とは違うのか?

以前、「自分で作るWordマクロ(1)(2)」を紹介いたしました。

この「自分で作るWordマクロ(1)(2)」と本書は、違うのか?

これが一番気になりますよね。結論「違います。」

どう違うかというと、本書は「実務翻訳者のため」と銘打っているだけあって、翻訳者の実務にあわせた「思考方法」にも触れられている点です。

例題も、実務翻訳者であれば遭遇するようなものが掲載されています。

ただし、「自分で作るWordマクロ(1)(2)」と同じ内容も当然入っています。

おそらく、本書は「自分で作るWordマクロ(1)(2)」の読者でなくてもわかるように解説されている(と僕は思うのですが)ために、マクロの基礎の説明部分(マクロの自動記録方法など)は重複せざるを得ないからだと思います。

「自分で作るWordマクロ(1)(2)」で詳細に記載されていることが、本書では書かれていないこともあります。

例えば、「自分で作るWordマクロ(1)」に書かれているマクロをツールバーに登録する方法は、本書では書かれていません。

じゃあ、買いか?という点ですが、「買い」でしょう。

ワードマクロを使って実務翻訳を効率化させたいと本気で思っている方にとっては、本書は非常に安い投資だと思います。

なぜなら、

・「マクロの記録」機能を使ったワードマクロ作りの詳細な解説が、マクロの独学のとっかかりとして役立つ

・「特許翻訳者」水野麻子さんの思考パターンを追体験できる

からです。

だから、実務翻訳者の方にとっては、マクロも学べて、かつ業界でトップクラスの翻訳実績のある水野麻子さんの思考に触れられるという点で、一粒で二度おいしい、大変価値のある一冊だと思います。

以下、読んでみて面白いなと思った点を簡単に紹介します。

●翻訳者としてどうやって仕事を効率するのか?という視点

あくまでも、「どうやって仕事を効率するのか?」という問いがあった上で、じゃあ、ワードのマクロを「手段」としてどう使っていくのか?が書かれていると思います。

マクロを使うこと、マクロを作ることが目的にならないようにするのは、自分でマクロを作っていく上で重要な視点だと思います。

私は、この点をよく間違えますから、気をつけたいと思っています。

私の場合、「1件の明細書翻訳で1回しか出ない作業(数十秒)を自動化させるマクロ」を作成するのに、数時間もかけてしまうことがあります(笑)。

あんまり費用対効果よくないですよねぇ。。。

私の場合、マクロ作りが趣味のようなもので、作っていること自体が楽しみなので、それはそれでいいのですが。

●マクロ以外の「別の手段」のヒントもあり

日本語変換ソフトのMS-IMEをATOKに変えるだけで、業務効率アップって信じられますか?

こちらでも水野麻子さんが少し紹介しているんですが、ATOKいいですよ。

私も、翻訳学校に通っているときに水野麻子さんから紹介いただきましたが、値段が高いので躊躇して買えませんでした。

ようやく買ったのは紹介いただいてから1年くらいしたところでした。

数ヶ月使った感触では、「日本語の入力効率が上がる」と断言できます。

もっと早く買えばよかった。何にも努力しないで文字の入力スピードが上がります。これが一番重要。

業務効率(翻訳スピード)は、「文字入力のスピード」としても評価できますね。

その場合には、ATOKを使うだけで、翻訳スピードが上がったことになります。

「マクロありき」の発想ではなくて、目的を達成するための適切な手段を選べるようにする視野の広さは大切だと思います。

●スピードと品質(P6)

上記のところでも触れましたが、どうやってスピードを上げるかが大切ですね。

やり方によってはスピードと品質を同時に向上させることは可能。

そんな「思考方法」にも触れられています。

あと、関連しますが、「何のスピードを上げたいのでしょうか?(P3)」も大好きな質問です。

水野麻子さんの私塾で、よく話を聞きました。日常の仕事で応用できる考え方です。

●具体例が豊富

私は、マクロを作成することも、業務効率を上げることも「思考方法」が大切だと思っています。

本書には、特定の目的のために、「マクロの記録」機能を使ってプログラムを作るまでの工程がそのまま記載されています。

水野麻子さんからうかがったのですが、これはご本人の試行錯誤をベースにかかれたものだそうです。

これが何を意味するのか?ですね。

つまり、私たちは、この資料の例題を読むことで、「特許翻訳者」の水野麻子さんの思考方法を追体験できるというわけです。

「特許翻訳」に限らず、「翻訳」では、「調べもの」を効率的にかつ正確に行って自分の翻訳に反映させることが大切だと思います。

このマクロで壁にぶつかった「特許翻訳者」の水野麻子さんが、どうやって問題を解決していくのか?を知ることができます。

これは、マクロを学ぶことに加えて、翻訳者の皆様にとって非常に面白い体験だと思います。

●「適当にあたりをつけて探す」方法(P67)

先週のブログの元ネタです。自分のブログで先に使ってしまって、失礼いたしました。

というよりも、先週のブログの内容は、このレビュー用に書いたのですが、長くなりすぎたので、切り離して先に掲載してしまったわけです。

さて、本題。

「適当にあたりをつけて探す」方法について、本書では、「実現したい機能をどう記述すればよいか分からないときには、関連しそうな『単語』を順にあたっていくのです。」と書かれています。

まさしくこの通りですね。

水野麻子さんから、ワードマクロを学び始めた当初は、私はこの考え方になじめませんでした。

「わかっているからこそ、関連しそうな『単語』を発想できるんでしょ?自分には無理です。」くらいに思っていたこともあります。

でも、1年半くらいマクロを作り続けてわかったことは、「関連しそうな『単語』」からコードの記述を探すのは、やっぱり大事だということです。

これは、先週のブログに書いたとおりです。

●文字コード(P71)

ここまで理解して問題解決に当たるのか?と頭が下がります。

プロ意識全開の記述は面白いです。

ちょうど先日、こちらの本もぱらぱらと見ていたのですが、柳英夫さんも非常に深い理解のもと、翻訳作業を捕らえられている方だと思います。

先日紹介したばかりですが、再登場。

「文字コード」についてP97からの記事に少し書かれています。あわせて読むと、もう少し理解が深まります。

●どうやって問題解決したのか?(P82)

本書には、マクロを実行したときの「ギリシャ文字の文字化け」について対処する試行錯誤が書かれています。

これをどうやって解決したのかが興味深いところです。

実は、水野麻子さんの「過去の体験」に解決の鍵があったわけです。詳細は、本書を読んでからのお楽しみに。

・・・・・・水野麻子さんの「過去の体験」が問題解決の鍵?

・・・・・・これ、私たちに応用できると思いますか?

私はできると思います。私たちの仕事に応用できるすごく大きなヒントだと思ったから、印象に残っています。

おそらく、私たちがこれからマクロを作ったり翻訳作業をしたり、日々の仕事をしたりしてぶつかる壁というのは、どんなものであっても自分の体験の延長にあると思います。または、自分の等身大の課題だと思っています。

だからこそ、私たちの過去の体験も含めて、自分が手を伸ばせば届く範囲に解決策はころがっているんだと思います。

なんとなくイメージで言うと、「私が自分の部署の書類作成の効率化」のマクロを作るうえで壁にぶつかったとして、これを解く鍵は「部署のLANネットワークの特徴」、「関連部署との力関係に基づく業務フロー」、「同僚のあの一言」、「書類作りのくせ(長年の経緯による)」などかもしれません。

これは、当事者の私にはわかるけど、他の人にはわからない解決の鍵だと思います。おそらく、私の職場で働いていない水野麻子さんにもわからないだろう、と思います。

ということは、私たちは、水野麻子さんが解決に使った「ひらめき」に対して、自分が同じことをひらめかないと言って、「自分にはできない」と考えてしまう必要はないですよね。

自分ではすごく納得しているんですが、伝わるかなあ。

というわけで、「理詰め」で探した後に「過去の体験」をふと思い出したという解決のエピソードってすてきだなと思いました。

●Private Subや引数(ひきすう)の解説

「自分で作るWordマクロ(1)(2)」では書かれていない点です。

引数については、私もこちらで少し触れたことがありますが、便利な機能です。

●最後に、「自分で体験することが大切だと思います。」

おそらく、本書を読んだだけで、ワードマクロ初心者の方がすぐに内容を十分に理解することは難しいと思います。

なんとなくわかるかもしれないけど、それを自分で応用するところまでの理解には到達しないのでは?と思います。

ぜひ、「マクロの記録」機能を使って自分でプログラムを書いて、プログラムを動かしながら、何度も繰り返して読む・体験することをお勧めします。

本書はPDFファイルです。両面印刷にしてキンコーズなどで「リング製本(500円くらい)」するといいと思います。

こうすればページを開きっぱなしにできるので、本書の内容を確認しながら、ワードの操作ができます。

以上、思いつくままに雑感を書いてみました。

| | コメント (0) | トラックバック (0)

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

先日のブログで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は改行です。

| | コメント (0) | トラックバック (0)

2009年8月 1日 (土)

欲しいコードを、適当にあたりをつけて探す例

ほしい機能を具体的にイメージできたときに、それを実現するためのコードをどうやって探しているのでしょうか?

いい方法があったら教えていただきたいです。

今回は、おそらくワードマクロを勉強しはじめてある程度するとぶつかる壁(ヘルプに書かれていないと思われる機能を、どうやってコードにすればいいのか?)の最近の体験談を書こうと思います。

先日のブログにも書きましたが、「テーブル」の「表の文字列」にカーソルがある場合に表示される右クリックメニュー(ショートカットメニュー)に、グーグル検索用のメニューを追加するためのコードを探しました。

このときには、「適当にあたりをつけて探す」を繰り返しました。

まず最初に当たったのは、ワードマクロのヘルプ機能でしたが、ここでは見つかりませんでした。(もし見つけた方がいらっしゃったら、キーワードを教えてください

「適当にあたりをつけて探す」は、当てずっぽうに「下手な鉄砲」を打ち続けることではないと思います。

これはやるだけ時間の無駄です。

僕がやった推測は、日本語の項目名から英語の項目名を予測して、対応するコードを探す、という方法でした。

VBAは英語に対応した表記になっているので、なんとなく推測ができるわけです。検索だと、find(見つける命令)とかfound(見つかった判定)とかありますし。

今回の場合は、「表の文字列」なので、「string in table」とか 「strings in table」など思い浮かぶわけです。

で、いきなり結論ですが、何が正解だったかというと「table text」だったんですね。

どうやって気がついたか?というと、手元にあるワードマクロの洋書にたまたま「英語の右クリックメニュー」の写真が表示されていたのです。

これと、日本語の右クリックメニューと対比をしてあることに気がつきました。

日本語のメニューで「文字列」と「テキスト」と表示されているところが、英語のメニューではどちらも「text」になっていることがあると分かったんです。

また、メニューの一覧を見た感じ、前置詞は入らないことが多いみたいだ、、、と気がつきました。

こういうヒントを見つけて、「table text」にたどり着きました。

偶然といえば偶然ですが、こういう「適当さ加減」です。

今回はたまたまうまくいった例を紹介しましたが、こういうたまたまの頻度を多くするための工夫が必要だと思います。

この類の調べ物で時間がかかると、VBAの独学が苦痛になりますからね。

適度に絞り込んだ(あたりをつけた)上でいろいろな情報源で答えのヒントを探す、ということが重要かな、と思っています。

| | コメント (3) | トラックバック (0)

« 2009年7月 | トップページ | 2009年9月 »