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

はじめまして。
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 'フォントネームをワードアートにセット

このような記述です。
ご教授いただけると大変助かります。どうかよろしくお願いいたします。

A 回答 (2件)

2010版マクロの記録をほんの少し修正しました


Dim FtNm As String
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Select
' Sheets(1).Shapes("WordArt1").Select

'FtNm = "HGP教科書体" "HGP創英角ゴシックUB"
FtNm = ActiveCell.Text
' ActiveSheet.Shapes.AddTextEffect(msoTextEffect1, "ここに文字を入力", "+mn-lt", 54, _
msoTrue, msoFalse, 162.3877165354, 155.5470866142).Select

' Selection.ShapeRange.TextFrame2.TextRange.Font.Bold = msoFalse
With Selection.ShapeRange.TextFrame2.TextRange.Font
.NameComplexScript = FtNm
.NameFarEast = FtNm
.Name = FtNm
End With
With Selection.ShapeRange(1).TextFrame2.TextRange.Characters(1, 8).Font.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 0, 0)
.Transparency = 0
.Solid
End With

セルに貼り付けるときは"HGP教科書体"ではなくHGP教科書体のようにしてください。
うまくいかなかったのはHGPやUBを手入力して半角全角が違っているか余分なスペースが入っているなどしているためだろうと思います。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました。

説明不足で申し訳ありません。
一枚のシートにワードアートを15個程度使用しております。ワードアートの操作性は悪く、セル入力した内容をそのままワードアートに反映させるマクロを組みました。A1セルを斜体にすると、ワードアートも斜体になるというように・・・文字色、背景色、斜体、太さ ここまでは普通に動きました。フォントのみ変更が出来ないのでこまった次第です。

教えていただいたコーディングは残念ながらフォントの変更はできませんでした。(エラーにならずVBAは動いていましたが・・・)

しかしEXCEL2010ではワードアートのようなSHAPEでもマクロ記録が出来る!そしてフォントの変更もできる!!これが解っただけでも大収穫です。貴重なお時間をありがとうございました。
EXCEL2010で挑戦してみたいと思います

お礼日時:2011/07/08 21:23

ここに質問する前に、挿入ー図ーワードアートーフォント種類指定などの操作をして、マクロの記録を取り、


どういうコードになるかやってみましたか。初心者はマクロの記録を活用しないと。
Sub Macro4()
ActiveSheet.Shapes.AddTextEffect(msoTextEffect2, "東京都", "HG行書体", 36#, _
msoFalse, msoFalse, 402.75, 244.5).Select
End Sub
のようになった。
この"HG行書体"のところにセルにフォントの種類の文字列をまず変数に入れて、その変数を持ってきてセットすれば仕舞い。
FT = Sheets("LIST").Cells(1,1).Font.Name だと一旦セルの文字にフォント種類を設定してと、間接的になっているが
好みなら仕様が無いが、好みのものフォント種類を入力規則のリストで数種類をセットして、その中から1つを選ぶほうが判りやすいのでは。
フォントサイズも同じ。
ただワードアートが2箇所以上あって、フォント種類などを別のアートと変えたいときはこまるよね。
この程度(操作でも簡単)のことでVBAを使うのは、初心者の勉強のためならやむをえないが、意味が無いのでは。
(もっと別に基礎的なことで勉強することがあるように思うよ)
    • good
    • 0
この回答へのお礼

ご教授頂きありがとうございます。
お察しの通り、EXCEL2007VBAには、ワードアートの様なSHAPEをマクロ記録することが出来ないんです(涙・・・そのような仕様だと聞いております)



説明不足で申し訳ありません。
一枚の用紙にワードアートを15個程度使っております。ワードアートの操作性は悪く、エクセルのセルに入力した内容に従ってワードアートに文字を送り、印刷・・・というようなマクロを組みました。
セル内容の文字色や、斜体、太字・・・と ワードアートに反映させ、ここまでは普通に動いたのですが、フォント変更のみどうにもならず困った次第です。

EXCEL2010ではSHAPE関連でもきちんとマクロ記録がされるんですね!大収穫です。
ありがとうございました。 教えていただいたコーデイングを参考にさせていただきます。

お礼日時:2011/07/08 21:11

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