TOP > blog > エクセルからワードのテキストブロックのフォントを制御する
スクリプト
2017/02/24

エクセルからワードのテキストブロックのフォントを制御する

管理者用
blog

宛名のレイアウト・・・・・・を目標と言う事で、
前回は、テキストブロックを追加するところまで行いました。
今回は、テキストのフォントオブジェクトが持つ機能から、宛名レイアウトに使うと思われる項目について紹介します。

私自身、必要と思われる機能を探しながら、試行錯誤と言ったところですので、全ての機能を紹介する処までは行きません。
これを機会に、試していただければ幸いです。
そのうち、色々設定を変えて確認しましたら、改めて紹介します。

[マクロの記録]を通して、フォントに絡む項目をトレースしました。
以下に示すように多くの項目の指定が可能のようです。

    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

関連記事