« 2009年6月 | トップページ | 2009年8月 »

2009年7月の10件の記事

2009年7月31日 (金)

Word Macros and Visual Basic for Applications FAQ (ワードマクロの英語解説サイト)

こんな情報源があります。

丁寧な説明文にマクロへの愛情が感じられます。

Word Macros and Visual Basic® for Applications FAQ

グーグルのニュースグループでの質問に対する回答で、このページの記事が紹介されることがよくあります。

ワードをこよなく愛する人たちがボランティアで運営しているサイトです。

ワードに関することであればVBA以外のことも掲載されています。トップページはこちら

マクロ初心者の方は、このページがおすすめ。

「人からマクロをもらったけど、どうしたらいいの?」みたいな質問への回答です。

登録方法も書いてあります。

実際にやり方を知っている方は、英語でどう説明されているのかを確認するのも英語のお勉強になって面白いかも。

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

2009年7月28日 (火)

文書の文字数をかぞえるマクロ

以前紹介した、文書の最終段落の文字数の取得マクロの簡易版です。

●プログラムの作用

開いている書類(Activedocument)に記載される文字数を数えて、表示します。

ワードのメニューのツール>文字カウント で表示される以下の画面の「単語数」に対応する値です。

Wordcount_2 この文字カウント画面の単語数というのは、英単語数(たとえば「microsoft」であれば、1語です。)と日本語文字数(たとえば「マイクロソフト」であれば、7字です。)の合計数を示します。

この画像では、全角文字+半角カタカナの数が4字となっており、半角英数の単語数が27005語であり、この合計数が単語数として27009語とされています。

この計算をするのが20行目のComputeStatistics(wdStatisticWords)です。

このプロパティを探しかたは、文書の最終段落の文字数の取得マクロの記事に書きましたのでご覧ください。

●プログラムの翻訳

10行:現在開いている文書をmyRange変数に代入します。

20行:myRangeの単語数を数えて、WordCount変数に代入します。

30行:msgbox(メッセージボックス関数)を使って、メッセージを表示します。

40行:10行目で定義したmyRange変数を解除します。

●プログラム

Sub 文書の文字数算出()

      Dim myRange As Range
      Dim WordCount As Long

10    Set myRange = ActiveDocument.Range
20    WordCount = myRange.ComputeStatistics(wdStatisticWords)
30    msgbox "文字数は" & WordCount & "語です。"
40    Set myRange = Nothing
         
End Sub

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

2009年7月26日 (日)

string型変数とBoolean型変数が空であるかどうかを調べる

変数が空ということは、その変数にまだ初期値が与えられていないということです。

●string変数の場合

str がstring(文字列)型の変数として定義されている場合、以下のように文字列が空かどうかを確認できます。

If str = "" then
   msgbox "strは空の文字列です。"
end if

しかし、以下のコードを使うことがプログラムの高速化という観点から推奨されるようです。(WordHacks P176参照)

If Len(str) = 0 then
   msgbox "strは空の文字列です。"
end if

このほか、以下のようにしても判定ができます。

If str = vbNullString then
   msgbox "strは空の文字列です。"
end if

●Boolean型変数の場合

上記のコードをBoolean型の変数(true か false の値を示す変数)が空かどうか判定するために使おうとしたらできませんでした。

ネットで探した結果、このページを参考にして以下のような判定をすることにしました。

以下のコードでは、optionbutton1.valueはBoolean型の値を示します。

通常は、ある変数(例えばbool)をBoolean型のデータ変数として定義(Dim bool As Boolean)した直後に、boolはfalseとして値が設定されます。

しかし、以下の場合には、optionbutton1.valueはユーザフォームのオプションボタンの値を示しており、初期状態では値が入っていないということを前提にしています。

If VarType(optionbutton1.value) = vbNull Then
    msgbox "optionbutton1.valueは空の文字列です。"
End If

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

2009年7月25日 (土)

翻訳にパソコンを使うヒント

すでに絶版ですが、「翻訳者のためのパソコン使いこなしパーフェクトガイド」いい本です。

パソコンを翻訳作業に使うためのありとあらゆる方法が紹介されています。

私は、この本で紹介があったキーボードを今使っているし、画面切り替えのショートカットも毎日使っています。

マクロについても多少触れられています。

全般的に、多くの情報を掘り下げすぎない程度に紹介している感じですね。

アマゾンのレビューにも書かれていますが、google検索に関しても基本の解説だけです。

僕は、逆にそれがいいと思います。

google検索を翻訳に生かすための方法は、安藤進さんが何冊も書かれていますから、そちらを見た方がいいですよね。

ひとまずは、google検索が翻訳に生かせる、という事実を知ることが大切だと思うのです。

ぴんときたら、その人は、そちらを極めればいい。

機械翻訳や翻訳メモリ、またはマクロを使うことが翻訳に効果的だと思った人は、そちらを自分で使ってみればいい。

そういう様々な可能性を紹介してくれている本だと思います。

何かしらヒントがあると思いますよ。絶版ですがおすすめの一冊。

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

2009年7月24日 (金)

右クリックメニューへのマクロ登録方法(修正・追記)

昨日、右クリックメニューへのマクロ登録方法の記事を書いたのですが、さっそく修正です。はっきりと理解せずにコードを掲載してしまい、大変失礼しました。

また、表中のテキストを選択した場合の右クリックメニューの登録のコードを追記しました。(250行から470行)

(前回のコードの一部)

Sub AutoExec()

10    With Application.CommandBars("text")
20        .Reset

・・・

とあったのですが、20行の.Resetがあると、以下のような不都合がおこることがわかりました。

①今までにショートカットに自ら登録したメニューがすべてリセットされてしまいます。

②ワード起動時に他のマクロから登録したメニューも消去されてしまします。

よって、.Resetを使わずに、起動するたびに右クリックにメニューを登録する方法を以下のようにしてみました。

ちなみに、.Resetをしないと、ワードを起動するたびに、メニューを追加し続けるので、同じメニューが何個も繰り返し表示されてしまいます。

●プログラムの考え方

①ワード起動時(テンプレート起動時)に4つのメニューの記載があれば、それらを削除したあとに、新たに4つのメニューを書く。

②ワード終了時(テンプレート終了時)に4つのメニューを消す。

このようにすると、ワードの起動・終了だけではなくて、テンプレートのアドインのオン・オフのときにもメニューを書いたり消したりできます。

●各プログラムの説明

上記①の作業は、AutoExecで行います。

30行か60行にかけて、メニューの削除を行っています。

メニューが書かれていないのに削除を使用とする場合には、エラー(エラーコード5)になるのでその場合には、無視して次に進む(resume next)としました。

念のため、わざわざ一度メニューを消してから書きなおす処理としました。重複記載を避けるためです。

大辞典 Excel VBA」の例文を見ると、ツールバーの登録時には、同じ名称のツールバーを削除してから(重複しないようにしてから)登録しています。

これをまねしてみました。

なお、250行でWith Application.CommandBars("table text")としてみましたが、この"table text"は、ユーザー設定画面でショートカットメニューを登録する場合の「テーブル」の「表の文字列」に対応します。

適当に言葉をいれて探していたらうまくはまりました。偶然見つけました。

②の作業は、ワード終了時なので、AutoExitを用います。

ワードが起動されるときと同じようなコードです。

ワードが終了(テンプレート終了)時にメニューを消すように命令文が作られています。

●プログラム

Sub AutoExec()

10       On Error GoTo AutoExec_Error

20    With Application.CommandBars("text")
         
30        .Controls("Google詳細検索...").Delete
40        .Controls("グーグル検索").Delete
50        .Controls("グーグル検索_フレーズ").Delete
60        .Controls("グーグル検索_ワイルドカード").Delete
         
70        With .Controls.Add(Type:=msoControlButton, Before:=4)
80            .Caption = "Google詳細検索..."
90            .OnAction = "vct_Google_詳細検索"
100       End With
         
110       With .Controls.Add(Type:=msoControlButton, Before:=5)
120           .Caption = "グーグル検索"
130           .OnAction = "vct_グーグル検索"
140       End With
         
150       With .Controls.Add(Type:=msoControlButton, Before:=6)
160           .Caption = "グーグル検索_フレーズ"
170           .OnAction = "vct_グーグル検索_フレーズ"
180       End With
         
190       With .Controls.Add(Type:=msoControlButton, Before:=7)
200           .Caption = "グーグル検索_ワイルドカード"
210           .OnAction = "vct_グーグル検索_ワイルドカード"
220       End With
         
          '区切り線を引く
230       .Controls("Google詳細検索...").BeginGroup = True

240   End With

250   With Application.CommandBars("table text")
         
260       .Controls("Google詳細検索...").Delete
270       .Controls("グーグル検索").Delete
280       .Controls("グーグル検索_フレーズ").Delete
290       .Controls("グーグル検索_ワイルドカード").Delete
         
300       With .Controls.Add(Type:=msoControlButton, Before:=4)
310           .Caption = "Google詳細検索..."
320           .OnAction = "vct_Google_詳細検索"
330       End With
         
340       With .Controls.Add(Type:=msoControlButton, Before:=5)
350           .Caption = "グーグル検索"
360           .OnAction = "vct_グーグル検索"
370       End With
         
380       With .Controls.Add(Type:=msoControlButton, Before:=6)
390           .Caption = "グーグル検索_フレーズ"
400           .OnAction = "vct_グーグル検索_フレーズ"
410       End With
         
420       With .Controls.Add(Type:=msoControlButton, Before:=7)
430           .Caption = "グーグル検索_ワイルドカード"
440           .OnAction = "vct_グーグル検索_ワイルドカード"
450       End With
         
          '区切り線を引く
460       .Controls("Google詳細検索...").BeginGroup = True

470   End With

480      On Error GoTo 0
490      Exit Sub

AutoExec_Error:

500       If Err = 5 Then
510           Resume Next
520       Else
530           MsgBox "google_searchにエラーが発生したので終了します。"
540       End If
         
End Sub

Sub AutoExit()

10       On Error GoTo AutoExit_Error

20    With Application.CommandBars("text")
         
30        .Controls("Google詳細検索...").Delete
40        .Controls("グーグル検索").Delete
50        .Controls("グーグル検索_フレーズ").Delete
60        .Controls("グーグル検索_ワイルドカード").Delete

70    End With

80    With Application.CommandBars("table text")
         
90        .Controls("Google詳細検索...").Delete
100       .Controls("グーグル検索").Delete
110       .Controls("グーグル検索_フレーズ").Delete
120       .Controls("グーグル検索_ワイルドカード").Delete
         
130   End With

140      On Error GoTo 0
150      Exit Sub

AutoExit_Error:

160       If Err = 5 Then
170           Resume Next
180       Else
190           MsgBox "google_searchにエラーが発生したので終了します。"
200       End If

End Sub

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

2009年7月22日 (水)

右クリックメニューへのマクロ登録方法

右クリックへのマクロの登録を自動で行うものです。

後日修正しました。以下のコードでは、不都合がありますので、ご注意ください。修正版はこちら

今までは、ユーザー設定のツールバーから行っておりましたが、以下のプログラムをマクロが入ったテンプレートに記載すると、テンプレートが起動されたときに自動で右クリックメニューを追加してくれます。

ユーザー設定から登録した右クリックメニューが思うように表示されない場合があったので、いろいろと探しているうちにこの方法にたどりつきました。

参考図書は、仕事に役立つExcel VBAとできる大辞典 Excel VBAの2冊です(こちらで紹介しています)。

これらからヒントを得て、ワードVBAのヘルプメニューで探しました。

Googlesearch3_2

下に記載したプログラムで、文書中のテキスト表示画面で右クリックをした場合に現れるメニューへ登録ができます。(10行で指定しています)

以下の場合では、表にカーソルがあったときの右クリックメニューには反映されません。

必要であれば、別途登録が必要になります。

以下は、現在作成中の右クリックでグーグル検索の改良版に使われるコードです。

OnActionで、対応するマクロが動きます。

190行で区切り線を引いています。

区切り線があると、イメージで示したように、見栄えが少し良くなります。

Sub AutoExec()

10    With Application.CommandBars("text")
20        .Reset
         
30        With .Controls.Add(Type:=msoControlButton, Before:=4)
40            .Caption = "Google詳細検索..."
50            .OnAction = "vct_Google_詳細検索"
60        End With
         
70        With .Controls.Add(Type:=msoControlButton, Before:=5)
80            .Caption = "グーグル検索"
90            .OnAction = "vct_グーグル検索"
100       End With
         
110       With .Controls.Add(Type:=msoControlButton, Before:=6)
120           .Caption = "グーグル検索_フレーズ"
130           .OnAction = "vct_グーグル検索_フレーズ"
140       End With
         
150       With .Controls.Add(Type:=msoControlButton, Before:=7)
160           .Caption = "グーグル検索_ワイルドカード"
170           .OnAction = "vct_グーグル検索_ワイルドカード"
180       End With
         
          '区切り線を引く
190       .Controls("Google詳細検索...").BeginGroup = True

200   End With

End Sub

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

2009年7月19日 (日)

祝 ブログ2年目に突入!!

実は、本日はこのブログを開設してから2年目の開始の記念すべき日です。

昨日は忘れていましたが、昨日のブログは、1年目の締めの日でした。

●皆様のおかげです。

みなさんのおかげで、このブログを1年間続けることができました。ありがとうございます。

最初数ヶ月は一日30名くらいの方に訪問していただいておりましたが、最近は徐々に訪問者数が増えてきました。

「訪問者数」というのは、相互のコミュニケーションのバロメータみたいなものだと思うので、この数が増えるのは、すごくうれしいです。

直近の1ヶ月の「訪問者数」は平均111名/日で、「アクセス数」は、平均209人/日でした。

私のブログの内容や「右クリックでグーグル」をご自身のサイトで紹介していただいている方々もいらっしゃいまして、うれしく思います。

またリピートしていただいている方々、どうもありがとうございます。

この1年間、みなさんからご質問をいただいたり、私の間違った理解をご指摘いただきながら、みなさんと一緒に成長させていただきました。

●振り返ると自分の成長を実感

ブログを書き始めたころは、マクロを学び始めてから書きためていたマクロをベースにして、改良したものを少しずつ公開してきました。

最近はだんだんとリアルタイムで自分が書いているものを公開するようになっています。

案外、ネタはつきないもので、いまも作成中のマクロがいくつかあります。

できるだけ、自分の気づきがみなさんの役に立てばいいなと思ってメモをしてきたつもりですが、案外独りよがりなあんまり応用がきかないようなメモもたくさん書いてきたように思います。

ただ、この1年間のブログを読み直すと、今自分が書いているマクロは進化しているなと感じられます。

これも、このブログをしている自分なりの楽しみです。

●ワードによる業務効率向上へ

試行錯誤の結果、マクロを独学する方法もなんとなくわかってきました。

遠回りしたところもありました。

「マクロに書くこと」にこだわりすぎて、ワード本来の機能を見落としていたこともあります。

最近の興味は、ワードそのものになってきており、ワードを極めると、業務効率と書類の品質が向上するなと実感しております。

ちょっとした工夫で仕事自体が楽しくなったりします。

2年目である今年は、今までの自分の学び(失敗と成功)をみなさんと共有して、ワードを使った業務効率向上をめざす方々の役に立つブログを書きたいと思います。

応援をよろしくお願いします。

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

2009年7月18日 (土)

キーワードを蛍光色にするマクロ(使い方紹介)

こんにちは。

先週、キーワードを蛍光色にするマクロを紹介いたしました。

今日は、先週みなさんに問いかけた「とっておきの使い方」の答えを紹介します。

比較表を使った「視覚的な訳文の一致判定」の方法です。

この方法では、自分が確認したい点を、文章を読むことなく見た目で探し出します。

気になる箇所が見つかったら、その時に初めて、前後の文章を読み比べます。

よって、重要ではないところも含めたすべての文章を読み比べる場合と比較して、時間を削減することができます。

訳文が正確に書かれているのかを精読する必要もありますが、凡ミスをなくすための「とばし読み」を効率的に行う方法だと思ってください。

以下の説明だけではわかりにくいかもしれないので、ファイルをダウンロードして体感してみてください。

●基本編
翻訳で確認したいキーワードを対訳表で確認する方法です。

1.原文と訳文を用いて、比較表を作成してください。
比較表の作成方法は、こちら
適当なサンプルがない方は、以下のファイルをご利用ください。

「sample_table_US7551063.doc」をダウンロード

米国特許のUS7551063の一部を機械翻訳の日本語と対比させています。

US7551063の文中に、適当に言葉をいれて、サンプルとして使いやすく変更してしまいました。

発明を冒涜する意味はなく、ただ説明用に使いやすくしただけですので、ご了承ください。

日本語訳文も、機械翻訳した文章を説明用に変更したものあり、発明を正確にとらえているわけではございませんので、この点もご了承ください。

2.キーワード集を用意します。
読者さんと一緒につくったサンプルのキーワード集です。

「keyword1.txt」をダウンロード

(上記リンクをクリックしてもダウンロード画面にならない場合には、右クリックで「対象をファイルに保存」を選択してください)

英語と日本語とが一緒に書かれているところがポイントです。

keyword1には、一対一では対応しない日本語と英語が列挙されています。

たとえば、「複数」の訳語は「multiple」かもしれないし、「two or more」かもしれないのですが、とにかく対応するものをすべて書き出します。

3.比較表を開いた状態で、keyword1で着色します。
着色の方法は、前回のブログをご覧ください。

4.着色されたキーワードが原文・訳文の両方に記載されているか確認します。

分野ごと、もしくは確認する種類ごとに色分けをすると、確認がしやすくなります。

たとえば、「多義語キーワード集」には「substrate」のように、使われる分野によってのように訳語が変わりうるものをすべて列挙しておくといいと思います

substrateの訳例:【生化】 基質 ; 【化】 基体; 【生・菌】 培養基 (medium); 【電子工など】 回路基板(すべてリーダースから引用)

もしくは、「生化学キーワード集」には「substrate」と「基質」のようにその分野に関する訳語だけを書いたリストとしておくのもいいと思います。

この種のキーワード集を作るこつは、記載された日本語と英語がすべて同じ蛍光色で着色されたときに比較しやすいように言葉を選んでおくことです。

キーワード集を作るルールはとくにないのですが、みなさんが「視覚的な訳文の一致判定」をしやすいように自由に作ってみてください。

●応用編
これは、知恵が入っていておいしい使い方です。

1.原文と訳文を用いて、比較表を作成してください。
効果を体感するために、上記の米国特許の対比表をご利用ください。

2.キーワード集を用意します。
以下の2つのキーワード集をご利用ください。

「keyword2.txt」をダウンロード
「keyword3.txt」をダウンロード

keyword2 「可能・できる」に関連した言葉が列挙されています。
keyword3 「able」で終わる名詞が列挙されています。

3.比較表を開いた状態で、keyword2で着色します。

4.比較表を開いた状態で、keyword3で「蛍光色を解除します。

5.着色されたキーワードが原文・訳文の両方に記載されているか確認します。

すでにおわかりだと思いますが、これは「可能・できる」に関する原文の言葉が適切に訳出されているかを確認するための使い方です。

このように、蛍光着色と蛍光色削除の機能にて2つのキーワード集を使えば、必要なキーワードだけを着色することができます。

「視覚的な訳文の一致判定」のためであれば、単語の一部が蛍光色で着色されていればいいですね。

すてきな翻訳文の比較方法を提案いただきました読者さん、どうもありがとうございました。

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

2009年7月11日 (土)

キーワードを蛍光色にするマクロ

またかよ?というテーマですが、今までのものとはかなり違います。

まず、「ボタンが美しい!」ことと、「読者さんとの共同制作」という点が新しいです。

また、新しいコードも覚えましたので、是非ご覧ください。

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

●作用

テキストファイルに書いたキーワードを現在の文書中から探して、蛍光色にします。

蛍光色として選べるのは、文字に重ねても文字が読みやすいと思われる黄色や明るい緑などを中心に6色を使えるようにしました。

よって、キーワードの種類別に着色することができます。

また、キーワードの蛍光色を削除する機能もあります。

以前紹介した翻訳文の比較表自動作成マクロとあわせて使うと、その効果が発揮されます。

どんな使い方があるのか、いろいろとお試しください。

次回以降、とっておきの使い方を紹介しますので、それもお楽しみに。

●使い方

1.テンプレートを登録します。こちらをご参照ください。

2.Highlight

このような7つのボタンがツールバーに表示されます。

左から6つが、それぞれのボタンの色に対応した蛍光色を着色するマクロで、一番右が蛍光色を削除するマクロです。

3.キーワードを記載したテキストファイルを用意します。

以下のファイルを適当なフォルダに保存してください。

参考ファイル:「sample_keyword1.txt」をダウンロード

「sample_keyword2.txt」をダウンロード

ここにあげたキーワードは英語ですが、日本語でもかまいませんし、日本語と英語が混在してもかまいません。

あまり意味のあるキーワードを載せていません。単なる例示と思ってください。

4.キーワード検索対象となるワード文書を用意します。

参考ファイル:アップル社の7,536,565特許「sample_patent_us7536565.doc」をダウンロード

これも、最近の特許から選んだだけで、あんまり意味があるものではありません。単なる例示と思ってください。

5.着色する色のボタンをクリックします。

上記の「キーワード検索対象となるワード文書」を開いてください。

7つのボタンともに同じ操作で使えます。好きな色のボタンをクリックしてください。

Highlight2 ボタンをクリックするとファイルを選択する窓(左図参照)が開きます。

この窓を開いた状態では、テキストファイルだけが表示されるようにしました。

上記ステップ3にてテキストファイルを保存したフォルダを選び、どちらか一つのファイルを開きます(ファイルを選択してダブルクリックまたは、開くボタンをクリック)。

6.着色されます。

●工夫

①キーワードをテキストファイルに書きました。

今回は、複数のキーワードリストを使い分けることができます。

今までは、マクロのテンプレートにキーワードを書く手法を使っていましたが、これだと複数のキーワードリストを使い分けるのが難しいと感じておりました。

②ファイル選択が簡単!

プログラムの20,40~70行に記載されています。

キーワードのファイルを通常のファイルを開く窓から直感的にできます。

③ボタンの色が美しい!

自作するのをやめました。

「簡単プログラミングExcel VBA 応用編の付録のFaceIDリストから気に入ったボタンを探し出して使いました。

美しいですねぇ。仕事中についついクリックしてしまいます。

④テキストファイルの読み込み機能を使いました。

初めて使いました。スピードが速い感じがします。

プログラムの90,130,140,260行に関連のコードが書かれています。

ワードのVBの編集画面のヘルプファイルを見ると少し意味がわかると思います。

実際の作用としては、テキストファイルのファイル名を選んだ後、「シーケンシャル入力モード」でファイルを開いて、ファイルの先頭からファイルの末尾(EOF)までの文字列を一つずつ取得していることになります。

●プログラム(共通部分)

myHLCの文字列に、着色する色を代入して、以下の共通のプログラムを実行しています。

Sub 所定文字列を蛍光色にする(myHLC As String)

      Dim FileName
      Dim keyWord As String
      Dim actDoc As Document
      Dim myColorIndex As Long
      Dim myRange As Range
      Dim mydlgOpen As Dialog

      '対象文書の設定
10    Set actDoc = ActiveDocument

      'ダイアログボックスの設定
20    Set mydlgOpen = Dialogs(wdDialogFileOpen)

      'Rangeオブジェクトの設定
30    Set myRange = Selection.Range

      'キーワードファイル(テキストファイルに限定)を指定する
40    mydlgOpen.Name = "*.txt"

50    If mydlgOpen.Display = -1 Then
60        FileName = mydlgOpen.Name
70    End If

80    If Len(FileName) <> 0 Then

          'テキストファイルをシーケンシャル入力モードで開く
90        Open FileName For Input As #1
         
          '対象文書を選択
100       actDoc.Activate
         
          '蛍光ペンの現在の設定を仮保存
110       myColorIndex = Options.DefaultHighlightColorIndex
         
          '指定した蛍光色に変更
120       Options.DefaultHighlightColorIndex = myHLC
         
          'テキストファイル内で、最終行まで繰り返す処理
130       Do While Not EOF(1)
         
140           Line Input #1, keyWord
               
150           With myRange.Find
160             .Forward = True
170             .Wrap = wdFindContinue
180             .MatchWholeWord = True
190             .MatchByte = True
200             .Format = True
210             .Replacement.Highlight = True
220             .Execute findText:=keyWord, _
                 ReplaceWith:=keyWord, Replace:=wdReplaceAll
230           End With
               
240       Loop
         
          '蛍光ペンの設定を元に戻す
250       Options.DefaultHighlightColorIndex = myColorIndex
         
260       Close #1
       
270   End If

280   Set actDoc = Nothing
290   Set mydlgOpen = Nothing
300   Set myRange = Nothing
       
End Sub

●補足

このマクロは、このブログの読者さんと共同でアイディアをぶつけながら作りました。

いただいた提案が面白かったので、自分なりに解釈したり、使える技術を探したりしながらの作業。

おかげさまで、仕事の新しい方法を知って効率化ができましたし、マクロのコードもたくさん覚えました。

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

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

2009年7月 5日 (日)

カタカナに蛍光ペンで色をつけるマクロ

文書中のカタカナ文字を蛍光ペンで着色します。

30行のとおり、現在の設定では、「明るい緑色=wdBrightGreen」が設定されていますが、以下のように別の色も設定できます。

wdAuto
wdBlack
wdBlue
wdBrightGreen
wdByAuthor
wdDarkBlue
wdDarkRed
wdDarkYellow
wdGray25
wdGray50
wdGreen
wdNoHighlight
wdPink
wdRed
wdTeal
wdTurquoise
wdViolet
wdWhite
wdYellow

50行の

.Text = "([ァ-ヾヲ-゚]{1,})"

が、カタカナ1文字以上の設定方法です。

Rangeオブジェクトでの一括置換としていますが、ワイルドカードの設定をtrueにすることをお忘れなく(80行)。

置換対象は、カタカナ文字であり、「検索したカタカナ文字列」を、蛍光ペンで着色した「検索したカタカナ文字列と同じ文字列」に置換するという命令です。

上記の「検索したカタカナ文字列と同じ文字列」は、110行のとおり「\1」として表示されます。

Sub カタカナ()

      Dim myRange As Range
      Dim myColorIndex As String

10    Set myRange = Selection.Range

      '蛍光ペンの設定を仮保存
20    myColorIndex = Options.DefaultHighlightColorIndex

      '蛍光色を変更
30    Options.DefaultHighlightColorIndex = wdBrightGreen

40    With myRange.Find
50      .Text = "([ァ-ヾヲ-゚]{1,})"
60      .Forward = True
70      .Wrap = wdFindContinue
80      .MatchWildcards = True
90      .Format = True
100     .Replacement.Highlight = True
110     .Replacement.Text = "\1"
120     .Execute Replace:=wdReplaceAll
130   End With

      '蛍光ペンの設定を元に戻す
140   Options.DefaultHighlightColorIndex = myColorIndex

150   Set myRange = Nothing

End Sub

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

« 2009年6月 | トップページ | 2009年8月 »