- 締切済み
Symbolフォントのマクロ検索方法
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フォントを検索できる方法はありませんでしょうか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- xls88
- ベストアンサー率56% (669/1189)
Symbolフォントでは、 Unicode:0x0020(基本ラテン) からと、 Unicode:0xF020(私用領域)からとに、 同じ絵文字が登録されているようです。 ここら辺の事情が何か悪さをしているのかもしれません。
- xls88
- ベストアンサー率56% (669/1189)
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だけでなく "(" もひっかかってきていまいちです。 文字コードで検索する場合は、フォントに係わらず検索にかかるのが正常だと思います。 文字コードが同じで、フォントによって表示される形が変えられているだけですから。
- xls88
- ベストアンサー率56% (669/1189)
試しに「マクロの記録」でコードを得てマクロを組んでみました。 取りあえず、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のままのチグハグ状態 で使えるかどうかは分かりません。
お礼
ありがとうございます 質問でも書いたとおり、フォント自体は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 なのですが・・・)
ワードは書式の置換ができます。置換タブの「オプション」をクリックすると、「書式」ボタンが出てきます。 また、Symbolは英数字用のフォントですが、日本語用のフォントで探していないでしょうか。
お礼
ご回答ありがとうございます。 >ワードは書式の置換ができます。 質問でも書いたとおり、フォント自体はSymbolでも、Wordが認識しているフォント名はTimesになってしまっているので検索ではひっかかってきませんし、置換もできません。 >日本語用のフォントで探していないでしょうか。 英数字用のフォントで検索しました。
お礼
ご回答ありがとうございます。 Times から Symbol へのフォント変換は正常に行われるのですが、 逆の Symbol から Times へのフォント変換はできないようです。 これは手動でもマクロでも同様だと思います。 >文字コードで検索する場合は、フォントに係わらず検索にかかるのが正常だと思います。 >文字コードが同じで、フォントによって表示される形が変えられているだけですから。 おっしゃる通りなのですが、Symbolフォントのみ事情が違うようですね。 Symbol以外はフォントの変更が自由にできるのですが、 Symbolにフォントに変更するとフォントだけでなく文字コードまでも 変更されてしまっているようです。ですので元に戻そうとして、 Symbol から Times にフォントを変更しようとしても文字コードが Symbol 用になってしまっているので正常な Times には戻らないのだと思います。 フォントや文字コード以外でSymbolを検索する方法があればよいのですが。