goo blog サービス終了のお知らせ 

パソコン悪戦苦闘記録

テンプレートとWordマクロで、致命的ミスを防止。『文書の使い回し』で、痛い目に遭う前に。

 仕事に関する書類作成で、『文書の使い回し』をやっていませんか。
 PCで作成した書類を、再度、同じような文書を作るのに再利用し、必要な部分だけを上書きして完成させるってやつです。
 文書を一から作り上げるより、必要な部分の修正だけで済むなので、簡単な方法ではあります。

 しかぁ~しぃ、
 その『文書の使い回し』、つまり、上書き修正の方法は、危険と隣り合わせです。
 修正が必要な部分を取りこぼしなく、漏れなくすべてを上書きすれば、何らの問題も起きません。
 でも、人間のやること。上書き修正をすべき箇所を、つい見落としてしまう、ってことをやらかしてしまうのです。文書に埋もれている中から、要修正箇所をピックアップするに当たり、見落としは、必然的と言えるくらいに一定の確率で発生します。
 上書き修正すべき箇所を見落として、修正漏れの部分が残る。前の書類のまんまになってしまうのです。
 するとどうなるか。・・・・、はい、考えたくない事態の発生です。
 特に、その内容が、個人のプライバシーに関することや、秘密事項だったりと、慎重に扱うべき情報が載った文書の場合だと、ことは深刻です。
 他に見せてはならない情報が、他に漏れるなど、重大な事態に発展することがあります。

 そういう危険を伴う方法であることは、たいていの人は分かっています。そう、みんな知ってはいるのです。
 けれども、文書を最初っから作っている暇はないし、すでに完成文書があって、一部分だけを変えるだけならごく短時間で済むので、ついついやってしまうのです。分かっちゃいるけど、止められない。
 先日、私も『文書の使い回し』で上書き修正をすべき箇所を見落とし、前の情報が載った文書を外部に発送する、ちょっとした失敗、やっちまいました。

 こういうことにならないよう、とってもよい方法があるのです。しかも、下準備さえやっておけば、効率的に処理できます。
 その方法は何か、って言うと・・・・・、
     文書テンプレート
の利用です。
 「なんだ、目新しいもんじゃねぇな。」、っていう向きもあろうかとは、思います。
 まぁ、そう言わんと、付き合ってください。

 MicrosoftのWord の文書作成で、Wordマクロ(VBA)をほんの少し活用するという、私なりの方法を紹介しましょう。
 Wordマクロ、VBA(Visual Basic for Applications)と言っても、ここで使用するのは、ほんの初級編程度のものです。私も専門家ではないので、むつかしいことはできません。エクセルマクロを作ったことがある人なら、すぐに理解できる程度のものです。

 マクロ、VBAを全く見たことがない人にとってはちょっと厳しく、すぐに理解はできないかもしれません。それでも、これをもとにヒントを得るなどして、より発展的、応用的な方法を編み出す素材になるかもしれません。


まずは、その手順の概略です。
1 文書テンプレートを作成します。
2 テンプレートの中のデータ挿入箇所に、ブックマークを設定します。
3 VBエディターで、ユーザフォームを用意します。
4 ユーザフォーム上に、データ入力用のテキストボックスを配置します。
5 データをテンプレートに流し込むVBAコードを書きます。
大まかな流れは、以上です。
 
それでは、それぞれの手順を説明しましょう。 Let's Go !

第1 文書テンプレート
 テンプレート (template)とは、「ひな形」のことです。
 個別データ部分が空欄になっていて、使いまわしができる、文書の土台って言ったらいいでしょうかね。
 つまり、文書の共通部分を準備しておいて、個別のデータを入れていけば完成する、土台になる文書のひな型、それが文書テンプレートです。
 逆の言い方をすると、すでに完成している文書から、個別のデータを抜いた文書です。

 具体例を示しましょう。
 例えば、『FAX送信書』を作るとしましょう。
 差出人や、差出人住所・電話番号・FAX番号の箇所は、どこにFAXを送信するにしても変わらない部分なので、予めテンプレートの中に書き込んでおきます。テンプレートに、我が社の社名「ほげほげ株式会社」や、私の所属課「人事課」や、自分の名前、会社住所、電話番号、FAX番号を入れておくのです。これによって、自分の会社のFAX番号の誤記という、決定的なミスは避けることができるようになります。
 送信の都度、変更になる箇所は、あて名の箇所、送信の日付、全送信枚数です。このような個別データを入れる箇所は空白のままにしておきます。
 テンプレートは、個別データさえ入れれば完成するように、予めフォーマットを整えて、デザインしておきます。例えば、文書ヘッダー部分に会社のロゴを配置しておくとか、我が社の電話番号やFAX番号は、半角数字で、フォントはcentury、文字ポイントは14ポイントと、大きめにしておくなどです。
 このようにしてできた文書の土台、いったんテンプレートとして保存しておきます。この保存作業ときに、大事なポイントがあります。それは、
  拡張子を「.dotx」にして
文書保存するということです。ファイル名は、適当でいいので、
  例えば 「FAX送信書テンプレ.dotx」
といったファイル名にして保存しておきます。

第2 ブックマークの設定
 ブックマークとは、「しおり」などという言葉に訳されていますが、「しおり」では、今一つピンとこないですね。「しおり」ではなく、「目印」と言うと分かりやすいと思います。
 長文の文書の中で、すぐにその場所にカーソルを飛ばせるように付けておく目印、それがブックマークです。ブックマークは、その付けた箇所にデータを流し込めるという使い方もできます。

 上記の第1で作成した文書テンプレートの中に、ブックマークを設定する作業をします。テンプレートの中の個別データを挿入する箇所に、ブックマークを付けていくのです。
 そのために、まずテンプレートファイルを開くことになりますが、注意を要するのは、まずWordアプリケーションを起ち上げて、次に、開くメニューから、テンプレートファイルを選ぶ必要があるということです。いきなり、テンプレートファイルをダブルクリックすると、テンプレートを基にした新規文書(「文書1」などの新規のWordファイル)が作成されてしまい、テンプレートファイル自体を開くことができないのです。拡張子「.dotx」というファイルはそういう性質のファイルです。
 テンプレートファイルを開いたら、データを流し込む箇所に、分かりやすい名前のブックマークを付けていきます。
 Wordのリボン中、「挿入」タブ-「ブックマーク」をクリックすると、ブックマークダイアログボックスが開くので、ブックマーク名を入力し「追加」をクリックします。すると、カーソルを置いていた場所に、その設定した名前のブックマークが設定されます。ブックマーク名は、後の作業で重要になってきますので、分かりやすい名前にしておきます。
例えば、あて名の箇所には「あて名」、送信枚数の箇所には「枚数」など・・・。
 なお、どこにブックマークを設定したのか目で見て分かるように、操作前に「ファイル」タブ-「オプション」-「詳細設定」→「構成内容の表示」→「ブックマークを表示する」にチェックを入れておきます。

第3 ユーザフォーム UserForm を作成
 ここから、VBAの使用になります。
 新規Word文書を開き(第1で作成したテンプレートファイルとは別の、新規のWordファイルです。)、VBエディターを開きます。VBエディターを開く方法は、AltキーF11キーを同時押しです(この方法が最も簡単なので、覚えて損はありません。)。

 開いたVBエディターで、「挿入」メニューの中の「ユーザフォーム」をクリックします。これで、「ユーザフォーム」が追加されました。ユーザフォームを追加すると、同時に「ツールボックス」ツールバーが表示されます。
 このツールバーには、ユーザフォーム上に配置する様々な部品が用意されています。それぞれの部品の詳細は、本や、他のwebサイト等で勉強されるとよいかと思います。
 以上の、ユーザフォームの準備は、エクセルマクロ( Excel Macro )と全く同じ操作で、Wordに特有なものではありません。

第4 データ入力用のテキストボックス等を配置
 上記第3で追加したユーザフォーム上に、テキストボックスという部品を配置します。
 テキストボックスは、その名のとおり、「テキスト」を入力する「ボックス」です。
 ユーザフォームの傍らに出てきた「ツールボックス」ツールバーの中から、テキストボックスの部品をクリックして選び、そのままズルズルとユーザフォーム上にまでドラッグ&ドロップします。これで、テキストボックスが、ユーザフォーム上に配置できます。これも、エクセルマクロと全く同じで、なじみがある人が多いと思います。

 テキストボックスの隣には、ラベルという部品を配置して、どういうデータを入れるためのテキストボックスなのかを明らかにしておきます。
  ラベル:あて名 その隣に、あて名入力用のテキストボックス
  ラベル:送信日 その隣に、送信日入力用のテキストボックス
  ラベル:枚数  その隣に、全送信枚数を入力するためのテキストボックス
といった具合です。
 そして、ユーザフォーム上の隅っこに、「コマンドボタン( CommandButton )」も配置しておきます。
 このコマンドボタンをクリックすることによって、マクロが実行され、データがテンプレートを基に作成された文書の所定の箇所に流し込まれることになります(マクロコードについては、次の第5で解説します。)。

 以上のように、必要な部品がフォーム上に配置できたら、そのフォームを格納したWordファイルを保存します。このときの拡張子は、「.docm」にします。この拡張子で保存すると、マクロを格納したWordファイルになります。
 「FAX送信書作成マクロ.docm」などの任意のファイル名で、ファイル保存します。

第5 VBAコードの記述
 さて、いよいよ VBA【 Visual Basic for Applications 】の記述です。
 VBAは、Microsoft 社の Office ソフトの Word や Excel などで利用できる、同社のプログラミング言語です。エクセルマクロの利用者は、それなりの数の方がいらっしゃるのではないでしょうか。
 まず、上記第4で保存した「FAX送信書作成マクロ.docm」を開きます。初めてこのファイルを開くと、上部に「コンテンツを有効化」ボタンが出てくるので、このボタンをクリックして信頼済みドキュメントにします。
 ・・・・自分自身で作成したマクロ格納ファイルだから信頼済みドキュメントにできるのであって、「コンテンツを有効化」ボタンをクリックしていいのかどうかは、その都度、慎重な吟味が必要です。

 その後、Alt + F11 で、VBエディターを開きます。
 VBエディターに、先に作成しておいたユーザフォームを表示させます。
 ユーザフォーム上に配置しておいたコマンドボタンを、右クリックして、出てくるメニューの中の「コードの表示」をクリックします。
すると、
 Private Sub CommandButton1_Click()
 End Sub

というコードが記述されたエディター画面が開きます。
 「Private Sub CommandButton1_Click()」と、「End Sub」の間に、必要なコードを書いていくことになります。

以下のコードは、私が書いた例示です。参考にしていただければ幸いです。

Private Sub CommandButton1_Click()
Dim myDoc As Document
Set myDoc = Documents.Add(Template:="D:¥FAX送信書テンプレ.dotx")
'テンプレート中の各ブックマークに,必要情報を挿入して文書完成
With myDoc
.Bookmarks("送信日").Range.InsertAfter Me.TextBox1.Text
.Bookmarks("あて名").Range.InsertAfter Me.TextBox2.Text
.Bookmarks("枚数").Range.InsertAfter Me.TextBox3.Text
End With
End Sub

   ※ 「D:¥FAX送信書テンプレ.dotx」の中の「¥」のみ都合で全角で書きました。
      (本来は、これも半角とすべきです。)


 上記、コードを一行ずつ読めば、どのような動作が行われるか、理解できるはずです。
 エクセルマクロと、ほぼ同じコードです。
  1 myDoc というオブジェクト変数を宣言
  2 テンプレートを基にして、myDocという新規文書を作成
  3 各ブックマークに、テキストボックスに入力された文字列を流し込み
VBAコードは、これで完成です。
(上記のコードは、最低限必要な例示であって、コードに手を加えて、いろいろな動作をさせることができます。例えば、送信日の箇所には、本日の日付を自動入力させるなど。)

 これで下準備ができたので、うまく想定どおりに動いてくれるか、試してみてください。
 マクロは、ユーザフォームをWordウィンドウに表示させ、ユーザフォーム上のマクロボタンをクリックすることで実行できます。
 ユーザフォームをWordウィンドウに表示させるには、VBエディターの標準ツールバー内にある、「ユーザフォームの実行」ボタンをクリックすれば、できます。



(Wordマクロの実行方法や、ユーザフォームを表示させる方法に関しては、私なりのやり方があります。いつかこのブログ上で、その紹介もできたら、と考えています。)

 最初はなかなか想定どおりに動いてくれないものです。ですが、その試行錯誤を楽しむぐらいの気持ちで取り組むといいかと思います。その繰り返しで、詳しくなれます。

 以上が、「文書使い回し」防止策の提案です。
 「文書テンプレート」を用意しておけば、上書き修正漏れで、前の文書の情報が残ったままになる、なんてことを避けることができます。
 検討の上、できればこの方法を取り入れていただければ、と思います。
  「やってもうたぁ」・・・・と、なる前に。

最速攻略 Word マクロ / VBA徹底入門 〔Word 2013/2010/2007対応版〕
Amazon価格¥ 2,894
技術評論社


では、また。
名前:
コメント:

※文字化け等の原因になりますので顔文字の投稿はお控えください。

コメント利用規約に同意の上コメント投稿を行ってください。

 

サービス終了に伴い、10月1日にコメント投稿機能を終了させていただく予定です。
  • Xでシェアする
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

最近の「VBAプログラミング・マクロ」カテゴリーもっと見る

最近の記事
バックナンバー
人気記事