Office関連

FontオブジェクトのNameプロパティからフォント変更できない文字のフォントを変更するWordマクロ

Msdn フォーラムに「Word VBAで、「Century」フォントで「●」を入力したい」という質問がありました。

下記コードのようにマクロから「●」(黒丸(BLACK CIRCLE):U+25CF)を入力し、フォントを変更しようとしてもフォントが変わらない、というものです。

Public Sub Test()
  With Selection
    .TypeText ChrW(&H25CF) '黒丸(BLACK CIRCLE):U+25CF
    .MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    .Font.Name = "Century"
  End With
End Sub

Word 2010で試してみると、たしかにフォントが変わらないようです。
ただし、「フォント」コンボ ボックスを手動で変更した場合は、フォントがちゃんと変更できるようなので、マクロからコンボ ボックスを変更する、下記のようなコードを考えてみました。

Option Explicit

Public Sub Sample()
  TypeTextFont String(10, ChrW(&H25CF)), "Century"
End Sub

Public Sub TypeTextFont(ByVal Text As String, ByVal FontName As String)
  Dim r As Word.Range
  
  Set r = Selection.Range
  r.Text = Text
  r.Select
  With Application.CommandBars.FindControl(ID:=1728)
    If .Enabled = True Then .Text = FontName 'フォント(ComboBox)を操作
  End With
  Selection.Collapse wdCollapseEnd
End Sub

今回の場合は「●」でしたが、もしかしたら他にもフォントが変更できない文字があるかもしれません。
そういった場合は、上記マクロをお試しください。

「EXCEL VBA 業務自動化 仕事の効率を劇的に上げるノウハウ」レビュー前のページ

VBE用のCOMアドインをメモ帳で作ってみる。次のページ

関連記事

  1. Office関連

    Office クリップボードをマクロで操作する(UI Automation)

    以前MSAAを利用してOffice クリップボードを操作するマクロを書…

  2. Office関連

    名前付きセル(範囲)にコメントを付けるVBAマクロ

    Excelでマニュアルを作成する際、名前付きセル範囲を明記する必要があ…

  3. Office関連

    PHPWordを使ってPHPからWordファイルを出力してみる。

    最近オトカドールやルミティアジュエルやらの記事ばかり書いていますが、今…

  4. Office関連

    住所から郵便番号を取得するVBAマクロ

    「住所から郵便番号 VBA」といったキーワード検索でのアクセスがあった…

  5. Office関連

    [Office 2013]SkyDriveを無効(非表示)にする。

    「Office 2013 SkyDrive 無効」というキーワードで検…

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

Time limit is exhausted. Please reload CAPTCHA.

※本ページはプロモーションが含まれています。

Translate

最近の記事

アーカイブ

PAGE TOP