アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

この通りにやったのですが、エラーが出て完了できません。
構文が間違っているのでしょうか?

A 回答 (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は注意が必要と思う。
    • good
    • 0
この回答へのお礼

ありがとうございました。
#1#2も合わせて拝見させて頂き、
無事正常に変換する事が出来ました。

教えてgoo(OKWave)では半角カナは全角に修正される様ですね。
フォントネームは半角で入力する様にしておりますが、
合わせて今後ミスが無い様にしていきたいと思います。

無知な質問に対して丁寧にご回答ありがとうございました。

お礼日時:2007/12/19 09:49

先ほどアドバイスを入れたものです。

重要な点を指摘しませんでした
ActiveDocument.InlineShapes

ワードの文書上のワードアートの例で、質問ではエクセルになってます。根本的に例の通りでは使えません。
取り急ぎ。

この回答への補足

ありがとうございます。

ワード  ActiveDocument.InlineShapes
エクセル In ActiveSheet.Shapes

となる訳ですね。
そりゃ動く筈無いですね。
以後同じ間違いをしない様に気をつけます。

補足日時:2007/12/19 09:41
    • good
    • 0

まず質問コード上で


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つで、
他のモノがあるとエラーに繋がるかもと思い、
他の文章や図は全て省いておりました。

今後の質問の参考にさせて頂きます。

補足日時:2007/12/19 09:33
    • good
    • 0

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