エクセルからワードのテキストブロックのフォントを制御する
管理者用
宛名のレイアウト・・・・・・を目標と言う事で、
前回は、テキストブロックを追加するところまで行いました。
今回は、テキストのフォントオブジェクトが持つ機能から、宛名レイアウトに使うと思われる項目について紹介します。
私自身、必要と思われる機能を探しながら、試行錯誤と言ったところですので、全ての機能を紹介する処までは行きません。
これを機会に、試していただければ幸いです。
そのうち、色々設定を変えて確認しましたら、改めて紹介します。
[マクロの記録]を通して、フォントに絡む項目をトレースしました。
以下に示すように多くの項目の指定が可能のようです。
With Selection.Font
.NameFarEast = "MS 明朝"
.NameAscii = "G-OTF 新ゴ Pro R"
.NameOther = "G-OTF 新ゴ Pro R"
.Name = "+本文のフォント - 日本語"
.Size = 10.5
.Bold = True
.Italic = False
.Underline = wdUnderlineNone
.UnderlineColor = wdColorAutomatic
.StrikeThrough = False
.DoubleStrikeThrough = False
.Outline = False
.Emboss = False
.Shadow = False
.Hidden = False
.SmallCaps = False
.AllCaps = False
.Color = wdColorAutomatic
.Engrave = False
.Superscript = False
.Subscript = False
.Spacing = 0
.Scaling = 100
.Position = 0
.Kerning = 1
.Animation = wdAnimationNone
.DisableCharacterSpaceGrid = False
.EmphasisMark = wdEmphasisMarkNone
.Ligatures = wdLigaturesNone
.NumberSpacing = wdNumberSpacingDefault
.NumberForm = wdNumberFormDefault
.StylisticSet = wdStylisticSetDefault
.ContextualAlternates = 0
End With
上記の、項目は、次に示すメニューバーの、Wordのフォントグループに有る機能が設定が出来ると思われます。
この中から、宛名のレイアウトに最低限必要と思われる機能を探しました。
フォントの指定
項目を見る限り、いくつかのフォントを指定できるようです。
基本的には、
.Name = "A-OTF リュウミン Std EH-KO"
フォントサイズ
.Size = 16 'フォントサイズ
太字 あまり使わない方が良いと思います
.Bold = False '太字 True
文字間隔 ポイント指定で、文字間隔を変えます
溢れ処理時に使うかもしれません。
.Spacing = 0 '文字間
平体/長体 パーセントで平体から長体に変える事が出来ます。
溢れ処理時に使う事が有りそうです。
.Scaling = 100 '平体/長体
ベースラインシフト
文字の位置を上下に移動できます。
.Position = 0 'ベースラインシフト
最後に、全体のサンプルマクロを紹介してますが、先に紹介している、テキストボックスを作るマクロに、
上記のフォントのプロパティー設定を追加したものです。
フォントの部分を書換えて、試してください。
実行結果
サンプルマクロ全体
Sub Macro04()
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.Line.ForeColor = RGB(256, 256, 256) '枠の色を白にする
'TextFramA1.Line.Visible = msoFalse '枠線無しに
Rem フォントの設定をこなう
With TextFramA1.TextFrame.TextRange.Font
.Name = "SO昭和行書"
.Size = 16 'フォントサイズ
.Bold = False '太字 True
.Spacing = 0 '文字間
.Scaling = 100 '平体/長体
.Position = 0 'ベースラインから
'.Superscript = True '上付 True
'.Subscript = False '下付 TRUE
'.Italic = False '斜体 True False
End With
End Sub