プロが教える店舗&オフィスのセキュリティ対策術

EXCELでワードアートを沢山使っています。ワードアートでなければ、文字幅を自由に扱えないからそうしているのですが、内容を変更する場合、一つ一つワードアートを指定してはテキストの編集を行う必要があり、大変手間が掛かっています。これをワードアートの中からセル参照を使えれば作業が楽になるのにと思っているのですが、そんなことは可能でしょうか?
よろしくお願いします。

A 回答 (3件)

ワードアートを右クリック、"ワードアートの書式設定"で、"Web"タブの"代わりに表示する文字列"をセル参照に利用する方法です。



セルA1を参照する場合、上記の文字列を、A1あるいはa1と記入します。

その後下のマクロtestを実行してください。表示されているワークシート上のワードアート全てに実行されます。
各々のワードアートの"代わりに表示する文字列"が、セル参照と判断されない場合には、そのワードアートは無視します。

Sub test()
Dim myShp As Shape
For Each myShp In ActiveSheet.Shapes
If IsOk(myShp) = True Then
myShp.TextEffect.Text = Range(myShp.AlternativeText).Text
End If
Next
End Sub
Function IsOk(ob As Object) As Boolean
Dim s As String
On Error GoTo p:
s = Range(ob.AlternativeText).Address
s = ob.TextEffect.Text
IsOk = True
Exit Function
p: IsOk = False
End Function

参照先のセルが空白の場合、ワードアートの文字列は消えず、何も変化が起こらないようです。
    • good
    • 0
この回答へのお礼

すごい!びっくりしました。
本当に奥が深い、というかさわりしか使っていない身で感激するのもおこがましいのですが、どうもありがとうございます。これもバッチリです。

お礼日時:2003/12/02 08:20

#1さんのカメラ機能は推薦かも。



やはりVBAでないと書けないと思うのですが、
B2のセルに文字を入力して、変更したい図形を選択
し、マクロ実行すれば書き換わります。
コンピューターにどのシェープを変更を教えるためにここでは選択を(やっぱ面倒ですね)

sub CellShDraw()

myText = Range("B2").Value
Selection.ShapeRange.TextEffect.Text = myText

End sub
    • good
    • 0

当方Excel2000を使っていますが、ワードアートからのセル参照はできないようです。

Excel2000以前でもできないでしょう。2000以降は判りませんが、おそらくその機能は付いてないと思われます。

> 文字幅を自由に扱えないからそうしているのですが、
オブジェクトの選択を再考されることをお勧めします。例えば、オブジェクトの大きさと文字の大きさが比例して連動するように文字幅が変わるのでも良ければ、カメラ機能が使えます。カメラ機能は、[ツール]>[ユーザー設定]で、ツールの分類の中にボタンが用意されています。(通常、このボタンは出ていません)

あるいは、VBAを扱うことができるならば、Worksheet_Changeイベントで、特定のワードアートオブジェクトのTextを変更するようにプログラムできます。下記例はセルA1の値を"WordArt 1"に連動させるマクロです。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
ActiveSheet.Shapes("WordArt 1").TextEffect.Text = Target.Value
End If
End Sub

ただし、ワードアート側を変更しても、セルAには反映されません。
    • good
    • 0
この回答へのお礼

ありがとうございます
"shift"+[編集]>[図のリンク貼り付け]は見つけてあったのですが、参照元のセルに書式を設定するあたりに思い至らず、うっかりしてました。カメラ機能で対処できそうです。どうもありがとうございました。

お礼日時:2003/12/01 12:41

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