【書籍紹介】誰も教えてくれなかった Word効率アップ術

2011年2月11日

Wordのマクロをはじめると、必ずといっていいほど必要になるのがワイルドカード検索・置換です。

そのときの頼りになる相棒になる書籍の紹介です。

誰も教えてくれなかった Word効率アップ術

水野麻子さん が電子ブックとして提供されています。

ワイルドカート検索とは、以下のようなことです。

文字列の検索に、具体的な文字列ではなく、文字並びのパターン※を指定して検索すること。

※:文字並びのパターン例
[0-9]、[a-zA-Z] など。

簡単な事例は、こちらの第4回ワードマクロ勉強会での配付資料 (PDF画面が別窓で開きます)をご覧ください。

私がワードマクロを勉強しはじめた3年ほど前、マクロに利用する文字並びパターンを作り出すのに非常に苦労したことを思い出します。

そもそも、どのような組み合わせが可能なのか?また、何を調べたらワイルドカードのルールが説明されているのか、全くわからなかったからです。

当時参考にしていたのは、西上原さんの「Wordで実践 やさしくて役に立つ「マクロ」事例集 」でした。

この本には、ワイルドカードを用いたマクロの事例が多数掲載されており、具体的な使い方を理解するのに大変役に立ちました。

そして、今、ワイルドカード検索を調べるツールは本書、誰も教えてくれなかった Word効率アップ術 です。

ワイルドカードの基本ルールから応用例まで60例以上が掲載されています。

ワイルドカードって何に使えるの?と思われているみなさま(私もかつてはそうでした)、翻訳のみならず、文章の校正やチェックに欠かせないツールであることが理解できると思います。

それと、ワイルドカードの使い方だけではなく、ワイルドカードを使いこなすヒントも本書から読めると思います。

ある意味、アイディア勝負という面がありますね。

「●●を■■に置き換えたい」という課題があった場合に、どうやってそれを実現するのか?をリアルに体験できます。

水野麻子さんがどうやって実現するのかを垣間見ることは、発想の視点を共有することでもあると思います。

たとえば、もう少し複雑な「試験問題にあらかじめ入れた括弧の中の回答部分だけが『空欄』になるように印刷したい。」という課題も、ワイルドカードで解決できるのです。

これを言い換えると、「括弧の中だけ印刷しない」というクイズですよね。

では、印刷しないようにするにはどうしたらいい?と徐々に「Wordの書式」に翻訳していきます。

これを1ステップでできればいいのですが、別に複数ステップで実現してもいいわけです(具体的な方法は、本書に掲載されていますからご覧ください)。

そういう柔軟な発想にふれつつ、日常のちょっとした課題をクイズ感覚で解いていくのは楽しいことだと思います。

そんなふうに、仕事の楽しさの幅をひろげてみてください。

コメント

 

  • 19. Re:Re:kinuasaさんへ>Re:Re:Re:マクロ続き>Re:Re:Re:( )の中を印刷しない方法

    >kinuasaさん

    >"Temporary"をTrueにしておくとアプリケーションを終了したときにAddで追加したコントロールを自動的に削除してくれるようになります(今試したら何故か効いていませんが…)。

    私もこのあたり、研究が必要だと思っております。

    以前試したときにはうまくいったように思いますが、うろ覚えです。

    右クリックのショートカットメニューも、Temporary = Trueにしても消えなかったり、ときおり対処に苦しみます。

    >いま試したらTemporary = Trueが効いていなかったので、閉じる際にボタンを削除する処理も入れておいた方が安全ですね(^^;

    はい。ありがとうございます。

    >コマンドバー周りはWordだけでなくExcelでも同じですので、Wordマクロに詳しくなくても回答できるんですよね(^^;;;

    私もツールバーの参考書は、エクセルのVBA本を使っています。

    いつもいろいろとご教示ありがとうございます。

  • 18. Re:kinuasaさんへ>Re:Re:Re:マクロ続き>Re:Re:Re:( )の中を印刷しない方法

    こんにちは。

    > ・標準ツールバーに作成されたボタンは、任意のツールバーやサブメニューにドラッグできる。(Temporary:=Trueってこのためかな?)

    "Temporary"の意味はちょ~っと違います(^^;
    "Temporary"をTrueにしておくとアプリケーションを終了したときにAddで追加したコントロールを自動的に削除してくれるようになります(今試したら何故か効いていませんが…)。
    このあたりはWordのヘルプに詳しい説明が書いてありますので、一度見てみることをオススメします(^^)

    > 文書を開くたびにツールバーにボタンを配置することはまだやったことがなかったので、これまたヒントをありがとうございます。

    いま試したらTemporary = Trueが効いていなかったので、閉じる際にボタンを削除する処理も入れておいた方が安全ですね(^^;

    > そのときは、オートコレクトのトグル設定をボタンにしていただいたのですが、ちょうど2年前くらいでした。

    あら~!そんなこともありましたか!(^^;
    コマンドバー周りはWordだけでなくExcelでも同じですので、Wordマクロに詳しくなくても回答できるんですよね(^^;;;

    kinuasa 返信する
  • 17. Re:新田さんへ>Re:Re:マクロ訂正ι(´Д`υ)>Re:Re:Re:( )の中を印刷しない方法

    >おちょこちょいさん

    お心遣いありがとうございます。
    最近忙しいのは、遊びが理由です(笑)。
    昨日は国府宮神社の裸祭りに応援に行っていました(友人が裸男になっていた)。
    18日も飲み会あるし。
    そういう意味でちょっと忙しいのです。

    セミナーでのデモンストレーションは、水野さんがされます。楽しみですね。
    私は懇親会で自分のパソコンを持って、いろんな方とマクロ談義をしようかなと思っています。

  • 16. Re:Re:Re:マクロ続き>Re:Re:Re:( )の中を印刷しない方法

    >kinuasaさん

    どうもありがとうございます。

    文書を開くたびにツールバーにボタンを配置することはまだやったことがなかったので、これまたヒントをありがとうございます。

    私が最初にボタン操作について学んだのは、きぬあささんからのモーグでの回答でした。

    そのときは、オートコレクトのトグル設定をボタンにしていただいたのですが、ちょうど2年前くらいでした。

    またしてもここでお世話になりました。
    どうもありがとうございます。

  • 15. kinuasaさんへ>Re:Re:Re:マクロ続き>Re:Re:Re:( )の中を印刷しない方法

    >kinuasaさん

    すごい...(しかも真夜中に...)
    ありがとうございます、無事、解決できました。

    実はネットで検索したものを見よう見真似で書いてみたものなので、書いてる本人、ActionControlプロパティというものをよく理解しておりません。
    r(・ε・ )Action...?はて...?

    サンプルコードも完璧に理解できたわけではないのですが、ボタンの追加などの要領がわかり、応用することができました。

    なんとなくわかったこと。
    ・標準ツールバーに作成されたボタンは、任意のツールバーやサブメニューにドラッグできる。(Temporary:=Trueってこのためかな?)

    どうもありがとうございました。(・∀・)ノ゛

    おちょこちょい 返信する
  • 14. 新田さんへ>Re:Re:マクロ訂正ι(´Д`υ)>Re:Re:Re:( )の中を印刷しない方法

    >新田順也☆ワードプログラマーさん

    あっっっΣ(・ω・ノ)ノ!
    今、デモの準備で立て込んでいるのですね。
    申し訳ありませんでした。
    でもヒントをいただいてありがとうございます。

    デモンストレーションの成功をお祈りしています。
    横浜でがんばってきてください!
    報告も楽しみにしています。

    おちょこちょい 返信する
  • 13. Re:Re:マクロ続き>Re:Re:Re:( )の中を印刷しない方法
    'ThisDocument
    Option ExplicitPrivate Sub Document_Open()
    On Error Resume Next
    Application.CommandBars("Standard").Controls("SampleButton").Delete
    On Error GoTo 0

    With Application.CommandBars("Standard").Controls.Add(Type:=msoControlButton, Temporary:=True)
    .FaceId = 59
    .OnAction = "button_OnAction"
    If Application.Options.PrintHiddenText Then
    .Caption = "PrintHiddenText:True"
    .State = msoButtonDown
    Else
    .Caption = "PrintHiddenText:False"
    .State = msoButtonUp
    End If
    End With
    End Sub

    Private Sub button_OnAction()
    Application.Options.PrintHiddenText = Not Application.Options.PrintHiddenText
    Debug.Print "PrintHiddenText:" & Application.Options.PrintHiddenText
    With Application.CommandBars.ActionControl
    If Application.Options.PrintHiddenText Then
    .Caption = "PrintHiddenText:True"
    .State = msoButtonDown
    Else
    .Caption = "PrintHiddenText:False"
    .State = msoButtonUp
    End If
    End With
    End Sub

    kinuasa 返信する
  • 12. Re:マクロ続き>Re:Re:Re:( )の中を印刷しない方法

    こんばんは。

    ActionControlプロパティを使うのであれば、OnActionで指定したプロシージャ内での処理であるかどうかを確認した方が良いです。
    文書を開いたときにマクロを実行するのは、アドインとして使う場合は新田さんが仰っているようにAutoExecマクロを、そうでない場合はAutoOpenマクロやDocument_Openを使えば実行できます。
    下記サンプルコードです。

    kinuasa 返信する
  • 11. Re:マクロ訂正ι(´Д`υ)>Re:Re:Re:( )の中を印刷しない方法

    >おちょこちょいさん

    こんばんは。
    ざっと見た感じですが、

    >Set myButton = Application.CommandBars.ActionControl

    で、myButtonの設定において、具体的に対応するボタンを特定されていないように感じました。

    そのためにオブジェクト変数が設定されていないというエラーになったのではないでしょうか。

    私は上記のような書き方はしたことがありませんので、実際の所はわかりませんが。

    私が知っているボタンの設定だと、

    Set myButton = Application.CommandBars("ツールバーの名称").Controls("ボタンの名称")

    としています。

    あと、起動時の設定については、

    ThisDocumentにAutoExecとして登録しておけば、ワード起動時に実行してくれます。

    今週は時間がなくて記事がかけませんが、上記が私が知っていることです。

    わかりにくくてすみませんが、何かのヒントになれば幸いです。

  • 10. Re:マクロ>Re:Re:Re:( )の中を印刷しない方法

    >おちょこちょいさん

    こんばんは。
    あ、そのご想像のとおりですよ。

    それをマクロに登録すれば、毎回の置換作業が楽になりますね。

    印刷しないために、印刷されない色に置換という考え方です。

    この考え方って面白いですよね。

  • 9. マクロ訂正ι(´Д`υ)>Re:Re:Re:( )の中を印刷しない方法

    コピペしくじりました...

    Sub TogglePrintHiddenText()
    '隠し文字の印刷切り替え
    Dim myButton As CommandBarButton
    Set myButton = Application.CommandBars.ActionControl

    Options.PrintHiddenText = Not Options.PrintHiddenText
    If Options.PrintHiddenText = True Then
    myButton.State = msoButtonDown '←注1(訂正→追加しました)
    Else
    myButton.State = msoButtonUp
    End If
    Set myButton = Nothing

    End Sub

    おちょこちょい 返信する
  • 8. マクロ続き>Re:Re:Re:( )の中を印刷しない方法
    つづき
    あと、前回少し間違えたことを書いてしまったのですが、隠し文字はオプション>印刷>同時に印刷する項目「隠し文字」で印刷切り替えができました。また、行内以外のオブジェクトには適用できないようです。それと、隠し文字印刷をボタンでトグルできるように考えてみました。
    隠し文字を印刷するモードのときは、モードを目視確認できるようにボタンをオン状態にし、オンオフを切り替えるというものです。

    Sub TogglePrintHiddenText()
    '隠し文字の印刷切り替え
    Dim myButton As CommandBarButton
    Set myButton = Application.CommandBars.ActionControl

    Options.PrintHiddenText = Not Options.PrintHiddenText
    If Options.PrintHiddenText = True Then
    Else
    myButton.State = msoButtonUp '←注1
    End If
    Set myButton = Nothing

    End Sub

    (゚Д゚)がっっっ!!
    印刷モードでは動作するのですが、VBEでF5実行すると、注1の部分が「実行時エラー'91':オブジェクト変数またはWithブロック変数が設定されていません。」となってしまいます。
    なぜでしょう??
    さらに、
    (1)「ボタン+コマンド名」のようにイメージとテキストを表示しているとき、モードに応じてCaptionを変更したい。
    (・∀・)隠し文字印刷モードだよ
    (・∀・)隠し文字印刷しないよ

    (2)マクロを実行しないとオンオフが正しく反映されないため、文書を開いた時にオンオフ状態を取得して反映したい。

    も実装したかったのですが、まだそこまで力がありません。
    どなたかよい方法をご存知の方、お教えください。

    おちょこちょい 返信する
  • 7. マクロ>Re:Re:Re:( )の中を印刷しない方法

    >新田順也☆ワードプログラマーさん

    あれ...?
    私は勝手に、水野さんのマクロがそういうものだと想像したのですが、違うのでしょうか。
    ワイルドカードを使って置換すると書いてありましたので、(かっこ)の中をワイルドカードで抽出し、置換用の書式をフォント白にして擬似的に見えない状態にするのかなー、などと想像したのです。

    フォントを白に置換する場合、
    ・文字そのものは残されるので記入スペースが確保される
    ・目視で印刷状態が確認できる
    という点が、隠し印刷よりも使い勝手がよさそうに思いました。

    つづく

    おちょこちょい 返信する
  • 6. Re:Re:( )の中を印刷しない方法

    >おちょこちょいさん

    >いちいちテキストに隠し文字を設定したり、採点用紙用に設定を戻すのさえメンドクサイから、あえて()の中だけ印刷しないマクロを使うのですね!

    そんなことがマクロでできるのですか!!

    ちょっと興味津々です。
    教えてください。

  • 5. Re:( )の中を印刷しない方法

    >おちょこちょいさん

    コメントをどうもありがとうございます。
    これ、面白いですね。

    隠し文字は使ったことがありませんでしたので、非常に参考になるアイディアをどうもありがとうございます。

    水野さんの冊子では別の方法が紹介されていますよ。

    ぜひお手元に一冊どうぞ。

    すでにワードマクロをされているおちょこちょいさんにとって、ワイルドカードの使い方を探すためにウェブやヘルプの検索をする時間がもったいないと思います。正直。

    この本からヒントを探す方がはやいと思いますよ。

  • 4. Re:ご紹介ありがとうございます

    >水野麻子さん

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

    訳語統一など、まさしくワイルドカードが得意な技ですよね。

    活用しはじめたらもうワイルドカードなしで仕事をするのは不可能なくらい強力な必携ツールです。

    今後も活用させていただきます。

  • 3. Re:( )の中を印刷しない方法
    あっ、わかった!!
    いちいちテキストに隠し文字を設定したり、採点用紙用に設定を戻すのさえメンドクサイから、あえて()の中だけ印刷しないマクロを使うのですね!
    そのほうが作業行程が少なくて済みますものね。
    やっぱりめんどくさがりは発明の母だ。
    おちょこちょい 返信する
  • 2. ( )の中を印刷しない方法
    いつもお世話になっているので、たまには役に立ちそうなことを。
    ( )の中を印刷しないためには、マクロ以外にもこんな方法があります。
    △は半角スペースとします。・鎌倉幕府は(△1192△)年、(△源頼朝△)によって作られた。

    △~△のテキストに隠し文字(2003では書式>フォント>フォントタブの中にある)を設定すると、印刷時には
    ・鎌倉幕府は( )年、( )によって作られた。
    というように、隠し文字を抜かして印刷されます。半角スペースを入れないと()のように狭いかっこになります。
    隠し文字にはてんてん下線が引かれ通常印刷文字と区別がつくようになっており、画像やテキストボックスなどのオブジェクトにも適用できます。
    採点用に印字したいときは、書式置換でオフにするか、Ctrl+Aで全文書選択して「□隠し文字」のチェックがオフになるまでクリックします。

    この機能をよく使いそうなら、ボタンやショートカットを登録したり、すべての隠し文字のオフ化をマクロにすると使いやすくなると思います。

    ちなみにいま、水野麻子さんの「語学力ゼロで8ヶ国語翻訳できるナゾ」を読書中です(・∀・)9。
    「誰も教えてくれなかった Word効率アップ術」はまだ持っておりませんが、CDつきで書店販売だとなお嬉しかったかも...。

    おちょこちょい 返信する
  • 1. ご紹介ありがとうございます
    ワイルドカードは、技術翻訳者の「必携ツール」ではないかと思います。
    翻訳のみならず、校正や訳語統一など、いろいろな場面で活用できますから。大規模案件だと、ワイルドカードを使うか否かで作業時間が週単位で変わることもときどきあります。
    ぜひ、たくさんの方々に活用してもらいたい機能のひとつですね。

    水野麻子

 

-書籍紹介
-,