一括変換でワードアートのフォントを簡単に変更する方法

このQ&Aのポイント
  • Office2003のEXCELでワードアートのフォントを一括変換したい場合、VBAのコードを実行することで簡単に変更することができます。
  • 具体的な手順は以下の通りです。まず、Microsoft Wordの「Visual Basic Editor」を起動し、「挿入」-「標準モジュール」を選択します。次に、提供されたコードを貼り付けて「実行」-「Sub/ユーザーフォームの実行」を選択します。
  • しかし、提供されたコードを実行するとエラーが出る場合があります。エラーが出る原因は構文の間違いです。コードの一部に不要な行が含まれているため、それらの行を削除することで問題が解決する場合があります。
回答を見る
  • ベストアンサー

ワードアートの一括変換

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

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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は注意が必要と思う。

lapis8033
質問者

お礼

ありがとうございました。 #1#2も合わせて拝見させて頂き、 無事正常に変換する事が出来ました。 教えてgoo(OKWave)では半角カナは全角に修正される様ですね。 フォントネームは半角で入力する様にしておりますが、 合わせて今後ミスが無い様にしていきたいと思います。 無知な質問に対して丁寧にご回答ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

先ほどアドバイスを入れたものです。重要な点を指摘しませんでした ActiveDocument.InlineShapes は ワードの文書上のワードアートの例で、質問ではエクセルになってます。根本的に例の通りでは使えません。 取り急ぎ。

lapis8033
質問者

補足

ありがとうございます。 ワード  ActiveDocument.InlineShapes エクセル In ActiveSheet.Shapes となる訳ですね。 そりゃ動く筈無いですね。 以後同じ間違いをしない様に気をつけます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

まず質問コード上で If End If の呼応関係がおかしい。  End If   End If の部分。 お手本をその通り写したか再チェックして、補足をすること。 お手本の作者は相当熟達のかたらしいから誤りは無いと思うので。 ーー それとエラーが出た行ぐらい質問に書くものだよ。 ーー プログラムが動かないとき プログラムのミスばかりに目が行きがちだが、データ(シートの状態 など)でも動か無くなることがある(多い)ので、どういう状態でテストしたかも書くべき。 例えばワード・アートをいくつ貼り付けたかなど。 どこを書いたらよいか難しい点だが。

lapis8033
質問者

補足

まずは丁寧にご回答ありがとうございます。  End If   End If の呼応がおかしいのを記載しなかった為お手数をお掛けしました。 今更ですが記載しておきます。 F5(Sub/ユーザー フォームの実行])後に コンパイル エラー: End If に対応する If ブロック がありません。 と出たので、End If を取り除くと、 コンパイル エラー: For に対応する If Next がありません。 と出ました。 For Each shape In ActiveDocument.Shapes の構文がおかしいのかなと思いましたが、 どこが違うのか分からなかった為に質問をした次第です。 また、EXCELに貼り付けたワードアートの数は3つで、 他のモノがあるとエラーに繋がるかもと思い、 他の文章や図は全て省いておりました。 今後の質問の参考にさせて頂きます。

関連するQ&A

  • Word2010 VBAでオブジェクトに文字の効果

    Word2010のVBAで作成するオートシェイプに文字を入力し、その文字に文字の効果を付けたいです。 付けたい効果は「ワードアートのスタイル」の「文字の効果」内にある「変形」の「四角」です。 Sub 図形() Dim 丸 As Shape Set 丸 = ActiveDocument.Shapes.AddShape(msoShapeOval, 1, 1, 60, 60) 丸.Select 丸.TextFrame.TextRange = "文字" 'この部分です。Excelではこれで出来たのですがWordだと書き方が違うのでしょうか? Selection.ShapeRange.TextEffect.PresetShape = msoTextEffectShapePlainText End Sub よろしくお願いいたします。

  • ワードアートとセルのリンク

    ワードアートとセルのリンク 以下のようになります。 ワードアートオブジェクトの名前は適宜変更してください。この例では"WordArt 1"としています。 ワードアートオブジェクトの名前は名前ボックスで変更するか、複数ある場合はインデックス値でも指定することもできます。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = Range("A1").Address Then ActiveSheet.Shapes("WordArt 1").TextEffect.Text = Range("A1").Value End If End Sub EXCEL 2000 にて動作確認 という投稿で可能である事は分かったのですが、 シートが違うセルからのリンクは出来るのでしょうか? EXCEL2000です

  • セルの値をワードアートに

    セルの値をワードアートに A1に入力した値をワードアートに反映させていますが、 A1の値を複数のワードアートに反映させる場合は下記のコードの 3行目を数分だけ入れないとダメでしょうか? Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Address <> "$A$1" Then Exit Sub  ActiveSheet.Shapes("WordArt 1").TextEffect.Text = Target.Value End Sub コピーしてワードアートオブジェクトの名前を一緒にしても 最初の1個しか反映されませんでした。 よろしくお願いします

  • WORDマクロエラー

    Wordでテキストボックスをレイアウト枠に変換するマクロを作りました。 簡単なコードだと思うのですが、「オブジェクト変数またはブロック変数が設定されていません」というエラーが出てしまいます。 どこに原因があるのでしょうか? Sub テキストボックス変換() Dim i Dim sp As Shape For i = 1 To ActiveDocument.Shapes.Count If sp.Type = msoTextBox Then sp.ConvertToFrame End If Next End Sub

  • 【Word2007】はじめに選んでいた場所を選びなおしたい

    Word2007を使用しています。 以前以下の質問をしました。 http://oshiete1.goo.ne.jp/qa4854648.html そこでInlineShapeの情報を取得するための 特殊な方法を教えて頂きました。 ただしこの方法を使用すると 選択されている場所が変更されてしまうため、 この処理をしたあとに、 選択箇所を元に戻したいと思っています。 今行っている処理は以下の通りです。 Sub main() Dim shape As Word.shape Dim ishp As Word.InlineShape For Each sh In ActiveDocument.Shapes sh.Select For Each ishp In Selection.Range.InlineShapes MsgBox (ishp.Width) Next Next End Sub このプログラムの前後で、 現在の選択箇所を取得し、そこに選択を戻せば良いのだろう ということは分かるのですが、その方法が分かりません。 もしよろしければ、教えて頂けませんか? ぜひよろしくお願い致します。

  • ワードアートと図形を組み合わせて印刷したい

    (1)ワードアートで「!」を入力し、字体を「HG創英角ポップ体」に設定 (2)「文字の効果」の「変形」から「上凸レンズ」を選択 (3)ドラッグし、「!」マークを拡大(約 高さ 50mm、幅 80mm)すると、 (4)印刷プレビューと文書ウインドウの表示は添付画像のとおりとなりました。 このため、ワードアート上に図形を挿入すると、文書ウインドウで配置した位置からずれて印刷されるのですが、どうすればうまく印刷できるのでしょうか。

  • ワード VBA

    ワードのマクロについて教えてください。 以下のようなマクロをボタンに登録しています。 Sub Macro10() Dim myReg As Object Dim st As String Dim match As Variant Set myReg = CreateObject("VBScript.Regexp") myReg.Pattern = "\x0d\x0d(|$)" myReg.Global = True st = ActiveDocument.Range.Text ActiveDocument.Range(1, 1).Select For Each match In myReg.Execute(st) With Selection .Find.Text = match.Value .Find.Replacement.Text = vbCr .Find.Execute , , , , , , , , , , wdReplaceAll End With Next st = ActiveDocument.Range.Text If myReg.Test(st) Then _ ActiveDocument.Range.Text = myReg.Replace(st, "") Set myReg = Nothing End Sub ここで教えていただきたいのは,上記のマクロを実行するためにボタンを押した際,実行前にカーソルが置かれていたのと同一の場所に実行後のカーソルを戻す方法です。(ちなにみ上記のマクロを実行する際にカーソルが置かれているのは,空白行ではない行の先頭です。※処理とは関係ないかもしれませんが,念のために。) そのような処理を行うには,上記のマクロにどのような記述を追加すればよいのでしょうか。 どなたかご教示いただければと思います。 どうぞよろしくお願いいたします。

  • WORD VBAでハイパーリンクの文字列色変更

    最初の質問 VBAの初心者です。教えてください。 色々なWEBサイトより情報を集めてWORD文書を作成しています。フォント名、サイズ、色がバラバラで、それを統一するVBAは以下のように出来たのですが、ハイパーリンクされている文字の色も黒になっています。ハイパーリンクされている文字色だけは本来の青色で表示したいのですが、どのようにしたらいいのか分かりません。よろしくお願いします。 (WORD2007 Windows7) 早速keithinさんより以下のご回答をいただきました。新しいWORDファイルで例題(30行ぐらい)を作り実行したところ、希望通りの結果でした。 その後ハイパーリンクの全てが表の中にある本ファイルで実行したところ、ハイパーリンクスタイルを再設定する途中で止まってしまい(12-13は設定されている)、”指定されたプロパティはこのオブジェクトではサポートされません”として h.Range.Style = wdStyleHyperlink がハイライトされてしまいます。 どのような問題が考えられるのでしょうか? 問題解決したと云いながら申し訳ありません。 サポートよろしくお願いします。 Sub macro1()  Dim h As Hyperlink ’全文のフォントを設定する  With ActiveDocument.Range(0, ActiveDocument.Range.End).Font   .Name = "MS Pゴシック"   .Size = 10.5   .Bold = False   .Color = wdColorBlack  End With ’ハイパーリンクスタイルを再設定する  For Each h In ActiveDocument.Hyperlinks   h.Range.Style = wdStyleHyperlink  Next End Sub

  • エクセルVBAでのワードアート操作をご教授ください

    はじめまして。 EXCEL2007を使っているVBA初心者です。 現在セル入力した内容からPOPをまとめて印刷するワークシートを作成しています。 ワードアートのフォントをVBAで変更させたいのですが上手くいきません・・・ 英数字でセル入力したときのみ、フォント変更されているようですが、全角文字をセルに入力したときワードアートに元々設定されているフォントで表示されてしまいます。 色々試したのですが、駄目でした(完璧に挫折です)  以下処理のイメージです。 セル A1に ”フォント変更したい” を入力。  セルA1のフォントを”HGP創英角ゴシックUB”に変更 マクロ実行 → ワードアートに 「フォント変更したい」 の文字を HGP創英角ゴシックUBのフォントで表示  させたいのですが・・・ Sheets(1).Shapes("WordArt1").Select FT = Sheets("LIST").Cells(1,1).Font.Name 'フォントネ-ム取り出し Selection.Characters.Font.Name = FT 'フォントネームをワードアートにセット このような記述です。 ご教授いただけると大変助かります。どうかよろしくお願いいたします。

  • ワードアート テキストの編集

    ワード2003を使っています。ワードアート挿入 OKから ワードアートテキストの編集に行きます。 そのときフォントがいつもMSPゴシックになっています。 これを英角ポップ体に常時したいと思います。 方法がありましたら教えてください。

専門家に質問してみよう