#俳句プログラミング にニアも参加します。(WordのVBAで俳句を出力してみました)

By | Date : 2015/02/27 ( Last Update : 2016/05/24 ) | 86 views

Nia-TN-SDF-A2

こんにちはー!ニアです。

私も「プロ生ちゃん #俳句プログラミング プチコンテスト 2015」に参加していこうと思います。ミョウガさんに強制参加させられました(笑)

プチコンテスト初参加ですが、よろしくお願いします。

 

 

1. WordのVBAで俳句を出力してみました

私は「Officeなど、アプリとの連携」を軸にプログラムを作っていこうと思います。

ということで、今回はWordのVBAで文章に俳句を出力したり、テキストボックスを作成してその中に俳句を入れたりしていきます。

まずは、シンプルに文章へ俳句を出力するプログラムです。

※このプログラムは https://gist.github.com/Nia-TN1012/0f746d7d0a293a7c2230 で公開されています。

※俳句は松尾芭蕉さんの句です。

 

ActiveDocument.Contentで作業中の文章を取得して、Textプロパティに俳句の文字列を設定し、文章に俳句を入力していきます。「vbCrLf」はVisual Basicにおける改行記号(キャリッジリターンとラインフィード)の定数です。

重要なポイントは、13行目にあるOrientationプロパティです。これは文字列の方向を表していて、横書きや縦書きなどに設定することができます。

縦書きにする時は「wdTextOrientationVerticalFarEast」に設定します。名前がちょっと長いから、オートコンプリートさんを活用するとよいです。

※「wdTextOrientationVertical」も縦書きですが、「wdTextOrientationVerticalFarEast」が右から行を並べる右縦書きに対し、こちらは左から行を並べる左縦書きになります。

あとは、フォントを行書体にしてちょっと和風テイストに仕上げれば完成です。

 

2. テキストボックスで作ってみますか?

次はテキストボックス(オートシェイプの方です)を文章に追加し、その中に俳句を入れてみます。

※このプログラムは https://gist.github.com/Nia-TN1012/0f746d7d0a293a7c2230 で公開されています。

 

ActiveDocument.Shapesでで作業中の文章にある図形のコレクションを取得し、AddTextboxでテキストボックスを追加します。第1引数のOrientationには右縦書きを表す「msoTextOrientationVerticalFarEast」を指定します。

第2引数及び第3引数はテキストボックスの左上の位置ですが、ここでは「ActiveDocument.PageSetup」にある「LeftMargin」及び「TopMargin」で印刷領域の左上の位置を指定します。

 

そしてそのテキストボックスをSelectで選択し、フォントや中身の文字列を設定すれば、プログラムの完成です。

vba02r

 

テキストボックスがまるで短冊みたいです。

 

3. お好みの俳句は何ですか?

今度は俳句を入力するユーザーフォームを用意して、オリジナルの俳句を入力できるようにしてみましょう。

まず、メニューバーから「挿入(I)」→「ユーザーフォーム(U)」を選択し、フォームを作成します。

vba03s

 

フォームを作成したら、俳句の入力フィールドと俳句出力用のボタンを配置します。

 

ユーザーフォームのコードには、以下のように俳句出力ボタンを押した時のイベントをコーディングします。

※このプログラムでの変数名は、ユーザーフォームはHaukuRegister、フォーム上の句のテキストボックスはPhrase1、中の句のテキストボックスはPhrase2、下の句のテキストボックスはPhrase3、俳句出力用ボタンはRegisterとしています。

※このプログラムは https://gist.github.com/Nia-TN1012/0f746d7d0a293a7c2230 で公開されています。

 

テキストボックスのTextプロパティで入力した文字列を取得することができます。

あとはフォントや文字列の方向を設定して、プログラムの出来上がりです。最終的な実行結果は、Haiku-word.vbのように作業中の文章にユーザーフォームで入力した俳句が出力されます。

 

4. おわりに

今回はWordのVBAを使って俳句を出力してみました。テキストボックスへの出力についてはExcelやPowerPointでも活用できるかな。

他にもCOMオブジェクトを使ってC++やC#、HSPなどの言語から操作してみたり、Office Developer Tools for Visual Studioを活用してみたりと、色々なアイディアがありそうです。

それでは、See you next!

 

この記事をシェアする
Chronoir.netのRSSフィードを購読する

About : ニア(Nia)

紅茶とコーヒーが好きな湘南生まれのプログラマー/ITエンジニアです。主にC#/C++/PHPを使ってプログラミングをしています。趣味は写真撮影と音ゲーです。時々イラストを描いています。プログラミングを勉強している方々と仲良くなりたいです! 興味を持っている分野:UWP/Xamarin/Android Wear/WPF/Windows/Visual Studio/WordPress/KUSANAGI/nginx

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*