- ベストアンサー
一括変換でワードアートのフォントを簡単に変更する方法
- Office2003のEXCELでワードアートのフォントを一括変換したい場合、VBAのコードを実行することで簡単に変更することができます。
- 具体的な手順は以下の通りです。まず、Microsoft Wordの「Visual Basic Editor」を起動し、「挿入」-「標準モジュール」を選択します。次に、提供されたコードを貼り付けて「実行」-「Sub/ユーザーフォームの実行」を選択します。
- しかし、提供されたコードを実行するとエラーが出る場合があります。エラーが出る原因は構文の間違いです。コードの一部に不要な行が含まれているため、それらの行を削除することで問題が解決する場合があります。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#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は注意が必要と思う。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
先ほどアドバイスを入れたものです。重要な点を指摘しませんでした ActiveDocument.InlineShapes は ワードの文書上のワードアートの例で、質問ではエクセルになってます。根本的に例の通りでは使えません。 取り急ぎ。
補足
ありがとうございます。 ワード ActiveDocument.InlineShapes エクセル In ActiveSheet.Shapes となる訳ですね。 そりゃ動く筈無いですね。 以後同じ間違いをしない様に気をつけます。
- imogasi
- ベストアンサー率27% (4737/17069)
まず質問コード上で 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)では半角カナは全角に修正される様ですね。 フォントネームは半角で入力する様にしておりますが、 合わせて今後ミスが無い様にしていきたいと思います。 無知な質問に対して丁寧にご回答ありがとうございました。