プロが教える店舗&オフィスのセキュリティ対策術

WindowsXP Pro Word2003

Symbolフォントを使用して±などの記号を使用していたのですが
TimesNewRomanに変更したいので、文書全体を選択後フォントをTimesNewRomanに
変更したところ、フォント名はTimesNewRomanに変更されましたが
フォント自体はSymbolのままのチグハグ状態になってしまいました。

1つ1つ見ていけば直せるのですが量が多く大変なのでマクロを組んで
検索できないものかと思い調べてみましたが見つかりませんでした。

Wordのフォント検索ではSymbolは見つかりませんでした。(フォント名がTimesになっているので)
If ActiveDocument.Range(文字の位置).Font.Name = "Symbol" then
でもひっかかりませんでした。

Selection.InsertSymbol CharacterNumber:=177, Font:="Symbol", Unicode:=False
これでSymbolフォントの文字挿入ができるので、逆に1文字ずつのCharacterNumberを
取得できればSymbolフォントかどうかを判断できるかなぁと思ったのですが、不可能でしょうか。

この様な状態でマクロでのSymbolフォントを検索できる方法はありませんでしょうか?

A 回答 (4件)

Symbolフォントでは、


Unicode:0x0020(基本ラテン) からと、
Unicode:0xF020(私用領域)からとに、
同じ絵文字が登録されているようです。
ここら辺の事情が何か悪さをしているのかもしれません。
    • good
    • 0

Sub test2()


  Dim i As Long
  Dim n As Long
  
  Selection.HomeKey Unit:=wdLine
  Selection.EndKey Unit:=wdLine, Extend:=wdExtend
  n = Len(Selection.Text)
  Selection.HomeKey Unit:=wdLine
  
  For i = 1 To n
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    With Selection
      .Font.Name = "Symbol" '---(1)
      '.Font.Name = "Times New Roman" '---(2)
      .MoveRight Unit:=wdCharacter, Count:=1
    End With
  Next i
End Sub

SymbolとTimes New Romanが混在するところで
(2)の行をコメントアウトして上記マクロを試してみました。
Times New RomanのところがSymbolに変更されました。
フォントタブでもSymbolと表示されます。
次に、(1)の行をコメントアウトして上記マクロを試してみました。
Times New RomanがSymbolに変更された箇所のみTimes New Romanに変更されるようです。
しかし、何度か繰り返すと違った結果になります。難しいです。よく分かりません。
因みに、手動で行った場合は、両者とも変化がありません。

>↑文字コードで条件判断してみるとSymbolが見つかったのですが、
>Symbolだけでなく "(" もひっかかってきていまいちです。
文字コードで検索する場合は、フォントに係わらず検索にかかるのが正常だと思います。
文字コードが同じで、フォントによって表示される形が変えられているだけですから。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Times から Symbol へのフォント変換は正常に行われるのですが、
逆の Symbol から Times へのフォント変換はできないようです。
これは手動でもマクロでも同様だと思います。

>文字コードで検索する場合は、フォントに係わらず検索にかかるのが正常だと思います。
>文字コードが同じで、フォントによって表示される形が変えられているだけですから。
おっしゃる通りなのですが、Symbolフォントのみ事情が違うようですね。

Symbol以外はフォントの変更が自由にできるのですが、
Symbolにフォントに変更するとフォントだけでなく文字コードまでも
変更されてしまっているようです。ですので元に戻そうとして、
Symbol から Times にフォントを変更しようとしても文字コードが
Symbol 用になってしまっているので正常な Times には戻らないのだと思います。

フォントや文字コード以外でSymbolを検索する方法があればよいのですが。

お礼日時:2008/12/15 11:22

試しに「マクロの記録」でコードを得てマクロを組んでみました。


取りあえず、1行のみです。

Sub test1()
  Dim i As Long
  Dim n As Long
  
  Selection.HomeKey Unit:=wdLine
  Selection.EndKey Unit:=wdLine, Extend:=wdExtend
  n = Len(Selection.Text)
  Selection.HomeKey Unit:=wdLine
  
  For i = 1 To n
    Selection.MoveRight Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    With Selection
      If .Font.Name = "Symbol" Then
        .Font.Name = "Times New Roman"
      End If
      .MoveRight Unit:=wdCharacter, Count:=1
    End With
  Next i
End Sub

>フォント名はTimesNewRomanに変更されましたが
>フォント自体はSymbolのままのチグハグ状態
で使えるかどうかは分かりません。
    • good
    • 0
この回答へのお礼

ありがとうございます

質問でも書いたとおり、フォント自体はSymbolでも、Wordが認識しているフォント名はTimesに
なってしまっているので検索ではひっかかってきませんし、置換もできません。
ですのでご回答頂いたマクロでも同様に変換されません。

私の説明不足と思いますので再度状況を書かせていただきます。
(1)英文はTimesNewRomanで、±などの記号はSymbolフォントで文書作成
 (記号の入力は[挿入]-[記号と特殊文字]でSymbolを選択)
(2)記号もTimesNewRomanにしたいので文書全体を選択[Ctrl+a]後、フォントをTimesに変更して保存
 (この時点で問題発生、チグハグ状態、Wordのバグ?)
(3)Symbolフォントを置換したいが、検索してもひっかかってこない

Wordの文書を見る限り全ての文字がTimesになっていても
PDF化するとSymbolフォントが入っておりそこで気付きました。
理由はフォント名がTimesでも、±など記号自体の書体はSymbolでした。
フォントサイズを大きくすると違いがよくわかります。

If Str(Asc(ActiveDocument.Range(r_p, r_p + 1))) = 40 Then
↑文字コードで条件判断してみるとSymbolが見つかったのですが、
Symbolだけでなく "(" もひっかかってきていまいちです。
(本来は "(" が正常な 文字コード= 40 なのですが・・・)

お礼日時:2008/12/11 09:52

 ワードは書式の置換ができます。

置換タブの「オプション」をクリックすると、「書式」ボタンが出てきます。
 また、Symbolは英数字用のフォントですが、日本語用のフォントで探していないでしょうか。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

>ワードは書式の置換ができます。
質問でも書いたとおり、フォント自体はSymbolでも、Wordが認識しているフォント名はTimesになってしまっているので検索ではひっかかってきませんし、置換もできません。

>日本語用のフォントで探していないでしょうか。
英数字用のフォントで検索しました。

お礼日時:2008/12/10 15:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!