カテゴリー「マクロテンプレート」の34件の記事

2010年8月22日 (日)

指先でズーム!の最新版を公開しました。

自分のこだわりみたいなもので作っているマクロの紹介です。

詳細は、アメブロをご覧ください。

キーボードで、画面の表示倍率を操作します。

もともと作ったきっかけは、キーボードの変更でした。

それまで使っていたMicroSoftのergonomic keyboard 4000 から、
TopreのRealForceに変更したときに、表示倍率を変更するスライダーが
なくて不便だなと感じていました。

いずれ作ってみたいと思っていたときに、Word 2007の表示倍率を
変更するスライダーを発見(下図は、Word 2010)。

Zoom_control9

これこれ、って思って作りました。

で、今回のバージョンアップでは、倍率の最大値と最小値とを
記憶させられるようにしましたし、あと、キーボードへの割り付けも
簡単にできるように工夫してみました。

Zoom_control6

Zoom_control7

Zoom_control8

ぜひ、ご利用ください。

マニュアルはこちら (PDFで開きます)

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

2010年6月15日 (火)

エスパスネットのリンク自動作成マクロのテンプレート

こちらも公開です。

以前のバージョンから大幅なアップデート。

使い方のメニューも表示されます。

ダウンロードはこちらから。

使い方はアメブロの記事をご覧ください。

Espacenettemp

ついでにリンクも充実させました。

Espacenettemp2

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

2010年5月16日 (日)

指先でズーム (自動インストール版)

またしても、先週紹介した「指先でズーム」と同じマクロの紹介ですが、
微妙に進化しています。

インストールが簡単!!

今後は、テンプレートをこのような形式で公開しようと思っています。

▼テンプレート
「mwm_zoom_control.dot」をダウンロード

▼インストールマニュアル(はじめに)
「install_manual.pdf」をダウンロード

▼インストールの説明
マクロテンプレート(mwm_zoom_control)をダウンロードして、
パソコンに保存してください。

ファイルをダブルクリックすると、説明文中に以下のような
ボタンが表示されます。

Install_manual

今画面で、インストールするフォルダを「スタートアップフォルダ」か
「ユーザーテンプレートフォルダ」かを選択できます。

詳細は、install_manual.pdfをご覧ください。

▼動画説明(指先でズームの使い方)

こちらに、動画で説明してみました。

▼動画説明(インストール方法)

こちらに、動画で説明してみました。

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

2010年5月 8日 (土)

指先でズーム(Windows 7対応版)

以前紹介させていただき、好評だった「指先でズーム」マクロの改訂版です。

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

Zoom_control

▼改良点
・Windows 7に対応しました。
・倍率を表示しました。

▼使い方
インストールします。インストール方法はこちら。
前回のマクロを使っている方は、削除してください。

具体的な操作方法は、前回のマクロと同様です。

前回のマクロの説明では、50段階で倍率が変化すると
書いてありますが、実はもっと細かいです。

キーボードから操作する場合には、50段階ですが、
マウスで、操作ダイアログボックスのスクロールバーの
つまみと両端のボタンの間をクリックすれば、
1パーセント単位で倍率を変化させることができます。

▼具体的な変更点
操作ダイアログの表示場所を保存する「mwm_zoom_control.ini」と
いうファイルがあります。

このファイルの保存用に、ユーザーテンプレートフォルダの中に
「みんなのワードマクロ」フォルダを作成しました。

今後、このブログで紹介させていただくマクロのiniファイルは、
すべて、この「みんなのワードマクロ」フォルダに保存させていただきます。

理由:
Windows Vista以降、セキュリティ管理が厳しくなりました。

Windows Xpでは、Windowsというフォルダにiniファイルを保存して
情報の読み書きが自由にできたのですが、Vista以降はできなく
なったようです。

よって、情報読み書き用のiniファイルを、ユーザーテンプレートフォルダ
内に作成することにしました。

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

2010年4月18日 (日)

アイディア・スイッチのマクロ

先日紹介いたしました「アイディア・スイッチ」の書籍のテクニックの一部を
マクロにしてみました。

著者の石井さんからもご了承いただきました。ありがとうございます。

昨年の8月に石井さんのセミナーを受講させていただいたときの懇親会で
このマクロの話をさせていただき、コラボをさせていただくことになりました。

本当に”熱い”方です。お話をしていて本当に楽しかったです。
その熱さは、こちらのブログからも伝わってきますね。

先日も紹介したとおり、「アイディア・スイッチ」には、アイディアづくりの
ノウハウがつまっています。

私は、そのノウハウを少し使いやすくマクロ化してみました。
ワードマクロのちょっとした可能性です。使ってみてください。

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

▼使い方
こちらのページを参考にして、上記のテンプレートをインストールしてください。

②ツールバーに[アイディア・スイッチ]と書かれたボタンが表示されます。
これをクリックしてください。

③ユーザーフォームに、4つのアイディア創出テクニックが表示されます。
すべて、インターネットを用いたテクニックです。

以下のような画面で、使い方も簡単に記載しましたので、まずは
ボタンをクリックして使ってみてください。

Idea1

Idea2

Idea3

Idea4

なお、ユーザーフォームの右端の「参考」タブのページに、以下のように
これらの4つのテクニックの掲載ページを記しました。

ご興味がある方、是非、本書をご購入いただき、さらに理解したうえで
ご利用ください。

Idea5

ここに紹介したテクニックは、本書の冒頭で紹介されている比較的
簡単なものだと思います。

ネットも使い方次第なんですね。この発想って面白いですねぇ。

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

2010年1月31日 (日)

図面の番号を目立たせる方法 (印刷したときにすぐに目に入る!)

特許明細書を速く読むコツがあります。それは、、、

図面の番号を目立たせると少し読みやすくなりますね。

説明文と図面との関係がつかみやすくなるからです。

それを支援するマクロの紹介です。「fig_number.dot」をダウンロード

翻訳作業において、明細書を正確により速く理解するために
日々の業務で使ってます。

かつては、印刷した明細書に蛍光ペンで色をつけていたのですが、
時間がもったいないと思い、最近マクロにしました。

▼作用
文中の「図1」などの図面番号や「図示」を以下の表示に変換します。

ボールド、蛍光ペンのグレー50、文字色を白。

こうすると、印刷したときや画面上で確認するときにすぐに
見つけられます。

▼使い方
1.こちらを参考にして、上記のテンプレートファイルをインストールします。

2.マクロを起動させると(アドインをオンにすると)、ツールバーに
ボタンが表示されます。

Fig_number

左側のボタンが蛍光ペンで着色するもの、右のボタンで
着色を解除します。

▼プログラム(着色用)

Sub 図番を白抜きにする()

      Dim myRange As Range   'Rangeオブジェクト
      Dim myColor As String  '蛍光ペンの色

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

      '現在選択されている蛍光ペンの色の保存
20    myColor = Options.DefaultHighlightColorIndex

      '蛍光ペンの色をGray50に設定
30    Options.DefaultHighlightColorIndex = wdGray50

      '図番の白抜き文字化(置換処理)
40    With myRange.Find
50        .Text = "図([0-90-9]{1,})"
60        .Replacement.Text = "図\1"
70        .Replacement.Font.Color = wdColorWhite
80        .Replacement.Font.Bold = True
90        .Replacement.Highlight = True
100       .Forward = True
110       .Wrap = wdFindContinue
120       .MatchWildcards = True
130       .Execute Replace:=wdReplaceAll
140   End With

      'Rangeオブジェクトを解除
150   Set myRange = Nothing

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

      '「図示」の言葉を白抜き文字化(置換処理)
170   With myRange.Find
180       .Text = "図示"
190       .Replacement.Text = "図示"
200       .Replacement.Font.Color = wdColorWhite
210       .Replacement.Font.Bold = True
220       .Replacement.Highlight = True
230       .Forward = True
240       .Wrap = wdFindContinue
250       .Execute Replace:=wdReplaceAll
260   End With

      'Rangeオブジェクトを解除
270   Set myRange = Nothing

      '蛍光ペンの色を最初に選択されていた色に戻す
280   Options.DefaultHighlightColorIndex = myColor

End Sub

▼プログラム(元に戻す用)

Option Explicit

Sub 図番の表示を戻す()

      Dim myRange As Range   'Rangeオブジェクト

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

      '図番の白抜き文字化(置換処理)
20    With myRange.Find
30        .Text = "図([0-90-9]{1,})"
40        .Font.Color = wdColorWhite
50        .Font.Bold = True
60        .Highlight = True
70        .Replacement.Text = "図\1"
80        .Replacement.Font.Color = wdColorAutomatic
90        .Replacement.Highlight = False
100       .Replacement.Font.Bold = False
110       .Forward = True
120       .Wrap = wdFindContinue
130       .MatchWildcards = True
140       .Execute Replace:=wdReplaceAll
150   End With

      'Rangeオブジェクトを解除
160   Set myRange = Nothing

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

      '「図示」の言葉を白抜き文字化(置換処理)
180   With myRange.Find
190       .Text = "図示"
200       .Font.Color = wdColorWhite
210       .Font.Bold = True
220       .Highlight = True
230       .Replacement.Text = "図示"
240       .Replacement.Font.Color = wdColorAutomatic
250       .Replacement.Highlight = False
260       .Replacement.Font.Bold = False
270       .Forward = True
280       .Wrap = wdFindContinue
290       .Execute Replace:=wdReplaceAll
300   End With

      'Rangeオブジェクトを解除
310   Set myRange = Nothing

End Sub

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

2010年1月10日 (日)

指先でズーム (表示画面の大きさを変えるマクロ)

これは、この冬の快心の一品です。「zoom_control.dot」をダウンロード 

Zoom_control1

ワード文書作成時に、表示画面の大きさを微調整したい
人向けのソフトです。

とくに、キーボードから手を離したくない人には朗報です。

僕のうれしさ、感じてください。

▼作用
画面の表示倍率を10%~500%の幅で50段階で変更します。

マウスを使用して、スライドバーを操作することで
直感的に倍率を変更できます。

また、キーボードからマクロを立ち上げて、左右の
カーソルキーを用いて倍率を変更することができます。

▼使い方
①インストールしてください。こちらをご参考。
②ツールバーに表示された[ZOOM(Z)]のボタンをクリックします。
③スライドバーが表示されるので、動かして動作を確認してください。

▼マニアックな使い方
以下のようにショートカットキーを設定しました。
これでキーボードから操作が可能になります。

Alt + Z: 起動
Alt + C: 閉じる
← (または、↑): 倍率下げる
→ (または、↓): 倍率あげる

キーボードの操作でズームができるので、マクロの名称を
「指先でズーム」としました。

▼工夫
スクロールバーの表示位置を記憶します。

私は、画面の右上に表示するようにしています。

▼参考図書
「かんたんプログラミング Excel2003 VBA コントロール関数編」

去年の冬休みに買った本ですが、すばらしい本ですね。

コントロールのことを調べるときに自分でヘルプを見たり、インターネットで
探したりするよりも、効率がいいと思います。特にコントロールのことを
あまり理解していないうちは。

体系立ててわかりやすく書かれているので、理解までの時間の節約になります。

非常に価値ある一冊だと思います。

このP.184~194にスクロールバーの設定方法が非常に
細かく書かれています。

P.187~188に記載されているScrollイベントとChangeイベント
の設定によって、少し作動が変わります。

今回のマクロは、Changeイベントをつかいまして、
結果として以下の効果が得られました。
・カーソルキーでスクロールバーの操作が可能
・スクロールバーのスクロールが終了したときに表示画面の
 倍率が変化する

逆に、Scrollイベントに設定すると、以下の通りになります。
・カーソルキーでスクロールバーを操作できない。
・スクロールバーを動かしたときに、リアルタイムで表示画面の
 倍率が変化する

いろいろな設定ができるんですね。

▼注意事項
パソコンに詳しい方だけ、気にしてください。
通常のパソコン使用では、知らなくても問題はありません。

以下の.iniファイルをwindowsフォルダに作成します。
vct_zoom_control.ini

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

2009年12月 5日 (土)

ユーザーフォームのテキストボックス内で改行文字列を取り出す(その4)最終回

ようやく、最終回です。ユーザーフォームのテンプレートを用意しました。

Get_data

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

こちらの記事のコメントでkonnoさんから教えていただいた「Replace関数」を用いました。

おかげさまで、Split関数を用いないためエラー処理が簡易になり、
結果として短いプログラムになりました。

英文を書くときの「ワンセンテンス・ワンミーニング」のルールを意識して、
1つの行に、ひとつの機能を書いてみました。

プログラムの作成経緯は、下記をご覧ください。

ユーザーフォームのテキストボックス内で改行文字列を取り出す(その1)
ユーザーフォームのテキストボックス内で改行文字列を取り出す(その2)
ユーザーフォームのテキストボックス内で改行文字列を取り出す(その3)
●ユーザーフォームのテキストボックス内で改行文字列を取り出す(その4)

▼使い方
1.インストールします。こちらをご覧ください。
2.ツールバーに表示された[ユーザーフォーム表示]ボタンをクリックします。
3.表示されたユーザーフォームに文字をいれたり保存したりして
  機能を試してみてください。

▼留意点
前回までのプログラムと違い、「みんなのワードマクロ_get_data.ini」という
ファイル名のini.ファイルにデータを保存することにしました。

よって、前回のプログラムで保存した文字列を呼び出すことはできません。

前回のプログラムで用いた「ファイル名.ini」というini.ファイルが不要になります。

ini.ファイルはWindowsフォルダに入っていますので、気になる方は、お手数ですが
ご自身で削除ください。

削除しなくても、基本的なパソコンの使用において悪影響はありません。
ごみファイルとして、たまっているというかんじです。

▼プログラムの解説

①(保存用)
プログラムを短く書くことができます。

      'テキストボックスの文字列の改行記号(vbCrLf)を★●★に置換する
20    myTextData = Replace(TextBox1.Value, vbCrLf, "★●★")

      '保存用文字列を.iniファイルに保存
30    System.PrivateProfileString("みんなのワードマクロ_get_data.ini", _
               "textdata", 1) = myTextData

とありますが、

'テキストボックスの文字列の改行記号(vbCrLf)を★●★に置換して、.iniファイルに保存
20    System.PrivateProfileString("みんなのワードマクロ_get_data.ini", _
               "textdata", 1) = Replace(TextBox1.Value, vbCrLf, "★●★")

こう書けば、1行になります。

②(データ取得用)
80行の「MsgBox Err.Description」は、エラーの内容を表示してくれるので
便利です。

エラーが発生すると通常は、エラー番号(Err)が表示されますが(例えば、13など)、
これでは何が起こったのかよくわかりません。

なので、エラーの内容を示すErr.Descriptionは便利だと思います。

今回のプログラムでは、特にエラーは想定しておりませんが、
新しく覚えた技なので、自分用のメモとして書いてみました。

③(ユーザーフォームの初期化)
ユーザーフォームを使うときには、この書き方をまねしています。

20行~30行
ユーザーフォームの表示位置の取得

90行~120行
テキストボックスの設定(改行表示) こちらで説明したものです。

130行
カーソルのフォーカスを移動

160行
はじめてこのマクロを起動したときのエラー処理です。

最初は、「みんなのワードマクロ_get_data.ini」のファイルがないため、
20行でこの実在しない.iniファイルから値を取得しようとするので
エラーが発生します。

その場合には、エラー番号13となるため、このエラー番号31が出たら
JNの場所に制御を移動させるような記述になっています。

▼プログラム①(保存用)

Sub StoreTextData()

      '保存用のプログラム

      Dim myTextData As String '保存用文字列

10    On Error GoTo StoreData_Error

      'テキストボックスの文字列の改行記号(vbCrLf)を★●★に置換する
20    myTextData = Replace(TextBox1.Value, vbCrLf, "★●★")

      '保存用文字列を.iniファイルに保存
30    System.PrivateProfileString("みんなのワードマクロ_get_data.ini", _
               "textdata", 1) = myTextData
               
40       On Error GoTo 0
50       Exit Sub

StoreData_Error:
         
60        MsgBox Err.Description

End Sub

▼プログラム②(データ取得用)

Private Sub CommandButton2_Click()
       
      '「取得」ボタン

      Dim myIniData As String  '.iniファイルから取得した文字列
      Dim myTextData As String 'テキストボックスに入力する文字列

10    On Error GoTo Errorhandler

      '「みんなのワードマクロ_get_data.ini」から保存済みの文字列を取得(→myIniData)
20    myIniData = System.PrivateProfileString("みんなのワードマクロ_get_data.ini", _
               "textdata", 1)
               
      'myIniDataの★●★を改行記号(vbCrLf)に置換(→myTextData)
30    myTextData = Replace(myIniData, "★●★", vbCrLf)

      'TextBox1に、置換後の文字列(myTextData)を入力
40    TextBox1.Value = myTextData

      'フォーカスをテキストボックスに移動
50    TextBox1.SetFocus

60       On Error GoTo 0
70       Exit Sub

Errorhandler:
         
80        MsgBox Err.Description
         
End Sub

▼プログラム③(ユーザーフォームの初期化)

Private Sub UserForm_Initialize()

      Dim ufLEFT As Single
      Dim ufTOP As Single

10    On Error GoTo UserForm_Initialize_Error
         
20    ufLEFT = System.PrivateProfileString("みんなのワードマクロ_get_data.ini", _
                   "form_position", "left")

30    ufTOP = System.PrivateProfileString("みんなのワードマクロ_get_data.ini", _
               "form_position", "top")

40    With UserForm1
50        .StartUpPosition = 0
60        .Left = ufLEFT
70        .Top = ufTOP
80    End With

JN:

      'テキストボックスの設定(改行表示)
90    With TextBox1
100       .MultiLine = True
110       .EnterKeyBehavior = True
120   End With

      'カーソル(フォーカス)をテキストボックスへ移動
130   TextBox1.SetFocus

140   On Error GoTo 0

150     Exit Sub

UserForm_Initialize_Error:
       
          '20行で値を取得できなかった場合のエラー処理

160       If Err = 13 Then
170           GoTo JN
180       Else
190           MsgBox Err.Description
200       End If

End Sub

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

2009年11月28日 (土)

【改良】クイックソートを用いてアルファベットの文字列を並び替え

さらなる改良版はこちら(2010/01/17)。

今回は、先週紹介した並び替えのマクロを進化させました。

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

先週紹介したサイトを読んでみたら、あれは、正式には
クイックソートではないらしいですね。

全ての文字列と順序を比較しているので、正式なクイックソート
よりも処理スピードが遅いと思います。

失礼いたしました。

僕も、他のクイックソートのプログラムに較べてあまりにも
シンプルで思考方法が違うので、少し不思議だなと思って
いたのですが、改良をしやすいので使わせてもらってました。

▼前回からの改善点
今回は、前回やりきれなかった以下の2点を改良しました。

①英単語(複数の単語の組み合わせ含む)の完全な並び替え
②大文字・小文字関係なく大小を比較

ついでに、用いる文字列を現在開いているワード文書から
読み込むようにしました。

記事の後半に記載されている「並び替え前後のサンプル」をご覧ください。

全角の文字列も含めて並び替えました。

おおよその並び替えのルールが見えると思います。

▼処理速度の例
ちなみに、2300ほどの英単語で並び替えをした場合に
私のパソコン(CPU: AMD Athlone 64 Processor 3000+ 2GHz,
メモリー: 1G, WinXP + Word2003) で55秒くらいかかりました。

同じことを、ワードの並び替え機能を使うと、1秒もかからずに
一瞬で並び替えてくれます。。。

もともと、このプログラムは、ユーザーフォーム中のリストボックスに
記載された80~100個の文字列の並び替えを目的としたものなので、
その程度の処理であれば、ストレスなく動くと思います。

多くの文字列の並び替えをする場合には、いちどワードの新規文書を開いて、
そこに全ての文字列をコピーしてからワードの機能の並べ替えを実行した方が
速いですね。

あんまりクイックではないソート(並び替え)です。

▼使い方
①インストールします。方法はこちら
②インストールしてアドインをオンにすると、[並び替え]という
 ボタンがツールバーに表示されます。
③開いている文書に、並び替えの対象となる文字列を記入します。
 (1行に1つの文字列を記入)
④[並び替え]ボタンをクリック

▼サンプル
【並び替え前】
300
情報
便利
お役立ち
販売
通販
blog
通信販売
Shopping
Shop
50
ヤフー
通信 販売
通信 販売
ブログ
1500
150
お気に入り

お買い物
検索
お得
デパート
web
Free
web2.0
tool
無料
book
free book
ニュース
進学塾
design
Search
中学受験
アニメ
ショッピング
SNS
映画
FC2
ホテル
DVD
予備校

【並び替え後】
1500
お気に入り
お得
お買い物
お役立ち
アニメ
ショッピング
デパート
ニュース
ブログ
ホテル
ヤフー
映画
検索

情報
進学塾
中学受験
通信 販売
通信販売
通信 販売
通販
販売
便利
無料
予備校
150
300
50
blog
book
design
DVD
FC2
Free
free book
Search
Shop
Shopping
SNS
tool
web
web2.0

▼プログラムの説明
(50行~90行)
開かれている文書に記載されている文字列を読み込みます。
案外、これも時間がかかります。

2300の文字列の場合に、31秒かかりました。
これって、時間かかりすぎ?

(200行~290行)
前回のプログラムでは、大文字のAと小文字のaとでは
別の文字として認識されていることがわかりました。

よって、今回は、Asc関数を用いて、文字コードを拾い出して、
それを変換して大文字と小文字とを比較するようにしました。

そういうわけで、処理がやたら面倒なことになっています。
たぶん、もっと簡単な方法があるんでしょうねぇ。

(10行、590行~610行)
Timer関数を使って時間を計測してみました。

▼プログラム
Sub QuickSortの例()

      Dim pCnt As Integer '段落数用の数値
      Dim pCntMax As Integer '段落の最大値
      Dim i As Long    '並び替え用の数値
      Dim j As Long    '並び替え用の数値
      Dim swap As String  '並び替え時の仮置き用変数
      Dim Chara() As String  '文字列
      Dim nMax As Integer '最大文字数
      Dim n As Integer    '比較する文字の序数
      Dim Chara_J As Integer '大文字を小文字の文字コードに変換
      Dim Chara_I As Integer '大文字を小文字の文字コードに変換
      Dim BlnSwap As Boolean '変更するか否かを示す
      Dim actDoc As Document '文書
      Dim StartT, FinishT, TotalT As Long  '時間計測用

10    StartT = Timer

20    Set actDoc = ActiveDocument

      '参照符号一覧の段落数
30    pCntMax = actDoc.Paragraphs.Count
40    ReDim Chara(1 To pCntMax)

      '文字列の読み込み
50    For pCnt = 1 To pCntMax
60        With actDoc.Paragraphs(pCnt).Range
70            Chara(pCnt) = Left(.Text, .Characters.Count - 1)
80        End With
90    Next pCnt

      'ソート開始
100   For i = 1 To pCntMax

110       For j = pCntMax To i Step -1
         
              '文字の大小の比較の最大回数を算出
              '少ない文字数を最大回数とする
             
120           If Len(Chara(i)) > Len(Chara(j)) Then
130               nMax = Len(Chara(j))
140               BlnSwap = True
150           Else
160               nMax = Len(Chara(i))
170               BlnSwap = False
180           End If
             
              'n番目の文字同士を文字コードを用いて大小を比較
             
190           For n = 1 To nMax
             
                  'アルファベットの文字コードを取得し、
                  '大文字の場合、対応する小文字の文字コードに変換
                  
                  'Chara(i)の場合
200               If Asc(Mid(Chara(i), n)) >= 65 And _
                     Asc(Mid(Chara(i), n)) <= 90 Then
210                   Chara_I = Asc(Mid(Chara(i), n)) + 32
220               Else
230                   Chara_I = Asc(Mid(Chara(i), n))
240               End If
                  
                  'Chara(j)の場合
250               If Asc(Mid(Chara(j), n)) >= 65 And _
                     Asc(Mid(Chara(j), n)) <= 90 Then
260                   Chara_J = Asc(Mid(Chara(j), n)) + 32
270               Else
280                   Chara_J = Asc(Mid(Chara(j), n))
290               End If
                  
                  'n文字目のアルファベットの比較
                  
                  'Chara(i)がChara(j)より大きい場合
300               If Chara_I > Chara_J Then
                  '順番を入れ替える
310                   swap = Chara(i)
320                   Chara(i) = Chara(j)
330                   Chara(j) = swap
340                   Exit For
                  
                  'Chara(i)がChara(j)より小さい場合
350               ElseIf Chara_I < Chara_J Then
                  '順番を入れ替えない
360                   Exit For
                  
                  'Chara(i)とChara(j)が同じ場合 かつ
                  'nが比較を繰り返す最大回数nMaxになっても
                  '文字の大小の比較が終わっていない場合
370               ElseIf n = nMax Then
                  
                      'Chara(i)の文字数がChara(j)の文字数より多い場合
380                   If BlnSwap = True Then
390                       swap = Chara(i)
400                       Chara(i) = Chara(j)
410                       Chara(j) = swap
420                       Exit For
                  
                      'Chara(i)の文字数がChara(j)の文字数以下の場合
430                   Else
440                       Exit For
450                   End If
                  
460               End If
             
470           Next n
             
480       Next j

490   Next i

      '並び替え後を表示

500   With actDoc
510       .Range(.Range.End - 1, .Range.End - 1).InsertParagraphAfter
520       .Range(.Range.End - 1, .Range.End - 1).Text = "【並び替え後】"
530       .Range(.Range.End - 1, .Range.End - 1).InsertParagraphAfter

540       For i = 1 To pCntMax
550           .Range(.Range.End - 1, .Range.End - 1).Text = Chara(i)
560           .Range(.Range.End - 1, .Range.End - 1).InsertParagraphAfter
570       Next i
580   End With

590   FinishT = Timer
600   TotalT = FinishT - StartT

610   MSGBOX TotalT & "秒かかりました。"

End Sub

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

2009年9月20日 (日)

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

先日紹介した、図表番号を挿入する(Seqフィールドの利用)の改良版です。

前回はプログラムだけ掲載しましたが、今回は機能を追加したテンプレートです。

テンプレートは、ベクターで紹介しようと思っていましたが、それほど説明が複雑なマクロではないので、ここで簡単に紹介します。

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

●作用

「図表番号の挿入」と「図表番号の相互参照」を簡単に実施します。

前回紹介したものは、図の番号だけでしたが、表の番号も同じことができるので、ボタンにしてみました。

相互参照をする場合には、自動的にフィールドが更新されますので、図や表の配置を入れ替えた場合でも、最新の番号が表示されます。

●作成背景

マクロのマニュアルを作成しており、表や図を使ってマクロの機能を説明しています。

ワードの機能である、図番の挿入や相互参照を使うことで、簡単にきれいに図表の番号を入れることができます。

それをさらに使いやすくしたのがこのマクロです。

●プログラム

前回紹介したものとほとんど同じです。

●使い方

①マクロテンプレートをインストールします。

②ツールバーに以下のようなボタン(4つ)が表示されます。

Insert_number

③【図No.】ボタンで、図番号を挿入します。このボタンをクリックすると、カーソル位置にあわせて適切な図番号が挿入されます。

たとえば、文書の末尾であれば、新しい図番が入ります。

また、図1と図2がすでに書かれており、図1と図2の間に図を追加する場合、新たに図2として追加されて、現在の図2は図3に自動で更新されます。

④「参照」ボタンをクリックすると、どの図を参照するのかインプットボックスが表示されます。

Insert_number2

すでに使われている図の番号(たとえば1)を入力すると、その番号が参照されたフィールド表示で「図1」などと入力されます。

フィールドで表示される、というのがみそです。

先ほどのように、マニュアル作成中に、図を追加していくと、それ以降の番号が順送りでずれますね。

フィールドで設定しておけば、「図2に示した配置で、」のような文中で使われる図番号も一緒に「図に示した配置で、」と更新されます。

ツールバーの右半分にある「【表No.】」ボタンおよびその右隣の「参照」ボタンでも表の番号挿入で上記の作用をします。

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