エクセルからワードに縦書きテキストボックスを追加
管理者用
今日は、テキストフレームを追加して、テキストフレーム内に縦書きで記述するところまでの紹介します。
エクセル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