Office2003のEXCEL使用しています。
ワードアートのフォントを別のモノに
一括変換したくて調べたら、
VBA のコードを実行すればOKと書いてありました。
以下文章。
1. Microsoft Word の「Visual Basic Editor」を起動。
2. [挿入] - [標準モジュール] を選択。
3. 下記のコードを貼り付け。
4. [実行] - [Sub/ユーザー フォームの実行] を選択。
これで、ワードアートのフォントが一括で置換出来る。
Sub ChangeWordArtFont()
' ワードアートのフォントを変更(書式が「行内(インライン)」の場合)
Dim inlineShape
For Each inlineShape In ActiveDocument.InlineShapes
If inlineShape.Type = wdInlineShapePicture Then
inlineShape.TextEffect.FontName = "HG創英角ポップ体"
End If
End If
' ワードアートのフォントを変更
Dim shape
For Each shape In ActiveDocument.Shapes
If shape.Type = msoTextEffect Then
shape.TextEffect.FontName = "HG創英角ポップ体"
End If
Next
End Sub
この通りにやったのですが、エラーが出て完了できません。
構文が間違っているのでしょうか?
#1、#2です。
Sub ChangeWordArtFont()
' ワードアートのフォントを変更(書式が「行内(インライン)」の場合)
Dim inlineShape As Object
For Each inlineShape In ActiveSheet.Shapes
If inlineShape.Type = wdInlineShapePicture Then
inlineShape.TextEffect.FontName = "HG創英角ポップ体"
End If
Next
' ワードアートのフォントを変更
Dim shape
For Each shape In ActiveSheet.Shapes
If shape.Type = msoTextEffect Then
shape.Select
Selection.ShapeRange.TextEffect.FontName = "HG創英角ポップ体"
End If
Next
End Sub
でやってみると動くようです。
ーーーー
<注意>
ポップ体のポッフは半角カナが正しいようで、上記のコードもOKWAVEで全角等に変換されるかも知れず注意のこと。半角カナ修正のこと。
これ以外も、フォントNameは注意が必要と思う。
まず質問コード上で
If
End If
の呼応関係がおかしい。
End If
End If
の部分。
お手本をその通り写したか再チェックして、補足をすること。
お手本の作者は相当熟達のかたらしいから誤りは無いと思うので。
ーー
それとエラーが出た行ぐらい質問に書くものだよ。
ーー
プログラムが動かないとき
プログラムのミスばかりに目が行きがちだが、データ(シートの状態
など)でも動か無くなることがある(多い)ので、どういう状態でテストしたかも書くべき。
例えばワード・アートをいくつ貼り付けたかなど。
どこを書いたらよいか難しい点だが。
質問者
補足
まずは丁寧にご回答ありがとうございます。
End If
End If
の呼応がおかしいのを記載しなかった為お手数をお掛けしました。
今更ですが記載しておきます。
F5(Sub/ユーザー フォームの実行])後に
コンパイル エラー:
End If に対応する If ブロック がありません。
と出たので、End If を取り除くと、
コンパイル エラー:
For に対応する If Next がありません。
と出ました。
For Each shape In ActiveDocument.Shapes
の構文がおかしいのかなと思いましたが、
どこが違うのか分からなかった為に質問をした次第です。
また、EXCELに貼り付けたワードアートの数は3つで、
他のモノがあるとエラーに繋がるかもと思い、
他の文章や図は全て省いておりました。
今後の質問の参考にさせて頂きます。
お礼
ありがとうございました。 #1#2も合わせて拝見させて頂き、 無事正常に変換する事が出来ました。 教えてgoo(OKWave)では半角カナは全角に修正される様ですね。 フォントネームは半角で入力する様にしておりますが、 合わせて今後ミスが無い様にしていきたいと思います。 無知な質問に対して丁寧にご回答ありがとうございました。