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

Nia-TN-SDF-A2

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

私も「プロ生ちゃん #俳句プログラミング プチコンテスト 2015」に参加していこうと思います。

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

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

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

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

Option Explicit

' Wordの文章に俳句を縦書きで出力するモジュールです。
Sub Haiku()
    
    With ActiveDocument.Content
        ' vbCrLfは改行記号です。
        .Text = "初桜" + vbCrLf + "折しも今日は" + vbCrLf + "よき日なり"
        ' フォントを行書体にします。
        .Font.name = "HGS行書体"
        .Font.Size = "30"
        ' 文字方向を縦書きにします。
        .Orientation = wdTextOrientationVerticalFarEast
    End With
    
End Sub

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

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

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

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

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

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

2. テキストボックスに俳句を出力してみた

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

Option Explicit

Sub Haiku()
    
    ' 縦書きのテキストボックスを作成します。
    ' ActiveDocument.PageSetupのLeftMarginとTopMarginで、印刷領域の左上の位置を取得します。
    ActiveDocument.Shapes.AddTextbox(
        msoTextOrientationVerticalFarEast, _
        ActiveDocument.PageSetup.LeftMargin, _
        ActiveDocument.PageSetup.TopMargin, _
        180, 300) _
    .Select
    
    ' テキストボックスに文字列とフォントを設定します。
    With Selection
        .Text = "初桜" + vbCrLf + "折しも今日は" + vbCrLf + "よき日なり"
        .Font.name = "HGS行書体"
        .Font.Size = "30"
    End With
    
End Sub

※このプログラムは 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としています。

Private Sub Register_Click()
        
    With ActiveDocument.Content
        ' vbCrLfは改行記号です。
        .Text = Phrase1.Text + vbCrLf + Phrase2.Text + vbCrLf + Phrase3.Text
        ' フォントを行書体にします。
        .Font.name = "HGS行書体"
        .Font.Size = "30"
        ' 文字方向を縦書きにします。
        .Orientation = wdTextOrientationVerticalFarEast
    End With
        
    Unload HaikuRegister
            
End Sub

※このプログラムは 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を活用してみたりと、色々なアイディアがありそうです。

[END]

コメント

タイトルとURLをコピーしました