TOP > blog > エクセルからワードに縦書きテキストボックスを追加
スクリプト
2017/02/20

エクセルからワードに縦書きテキストボックスを追加

管理者用
blog

今日は、テキストフレームを追加して、テキストフレーム内に縦書きで記述するところまでの紹介します。
エクセルVBAからワードをコントロールする。
宛名のレイアウト・・・・・・を目標としてます。

縦書きのテキストブックスを作る事が出来れば、宛名書きのスクリプトは出来たようなもんです。

最後の方に、テキストボックス縦書きのマクロ(Macro03())を紹介してますので、参考にしてください。
マクロを実行すると、次の順に動作します。

  • ワードが起動
  • 100×148mmのはがきサイズのブックを作る
  • テキストボックスを縦書き追加
  • エクセル Sheet1の2行、4列のデータ(宮本 武蔵)を書き込む

 

Set TextFramA1 = docWord.Shapes.AddTextbox _
   (Orientation:=msoTextOrientationVerticalFarEast, ・・・・・・・・・・・)

この部分で、縦書き、横書きを設定してます。
オブジェクトブラザーで見ると、7種類の設定が存在するようですが、それぞれ試して見てください。
右側のコンスタント定数(1~6)を使っても出来ます

Orientation:=
msoTextOrientationHorizontal            1
msoTextOrientationUpward             2
msoTextOrientationDownward             3
msoTextOrientationVerticalFarEast        4
msoTextOrientationVertical             5
msoTextOrientationHorizontalRotatedFarEast    6
msoTextOrientationMixed             -2

 

 テキストボックスが出来るようになると、宛名もなんとなく出来そうな気になって来ます。

作成されたテキストボックスは、枠が表示されていますが、コメントで記述している最後の行を活かすと
枠は、消えるはずです。 しばらくの間は、枠が付いた状態で進めて行きます。


    'TextFramA1.Line.ForeColor = RGB(256, 256, 256) '枠の色を白にする
    'TextFramA1.Line.Visible = msoFalse '枠無しに

次回は、文字関連の設定について見て見たいと思ってます。

 

<縦書きテキストボックスを作るマクロ>



Sub Macro03()

    Dim myWord As New Word.Application         ' Word 起動
    Dim docWord As Document                     
    
    Set myWord = CreateObject("Word.Application")
    Set docWord = myWord.Documents.Add
        ' Word を表示する
    myWord.Visible = True
    
    InData = Sheet1.Cells(2, 4) 'シート1の2行4列のデータ
    
Rem ブックのサイズをはがきサイズに
    With docWord.PageSetup
        .PageWidth = MillimetersToPoints(100)
        .PageHeight = MillimetersToPoints(148)
        .LeftMargin = MillimetersToPoints(5)
        .RightMargin = MillimetersToPoints(5)
        .TopMargin = MillimetersToPoints(5)
        .BottomMargin = MillimetersToPoints(5)
    End With
    
Rem テキストボックスを作る
    Set TextFramA1 = docWord.Shapes.AddTextbox _
   (Orientation:=msoTextOrientationVerticalFarEast, Left:=144, Top:=60, Width:=80, Height:=300)
 
    TextFramA1.TextFrame.TextRange.Text = InData 'データを書き込む
    TextFramA1.TextFrame.TextRange.Font.Size = 28 'フォントサイズ
    
    'TextFramA1.Line.ForeColor = RGB(256, 256, 256) '枠の色を白にする
    'TextFramA1.Line.Visible = msoFalse '線なし
    
    
    
End Sub

関連記事