ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Excel(エクセル)活用コミュのVBAから組織図のテキストを変更したい(Excel2003)

  • mixiチェック
  • このエントリーをはてなブックマークに追加
ワークシート上のシェイプ属性を変更するのに、VBAを利用すると便利ですよね。
手動で行ったら時間がかかる作業も、一瞬で完了します。

で、そんな中で、組織図へのアクセスで躓いてしまいました。
ご回答、アドバイスいただければ嬉しいです。

「アクティブなワークシート上にある組織図のテキストをVBAで変更したい」
(Excel2003です)

次のコードを実行すると
 実行時エラー'1004'
 CharactersクラスのTextプロパティを設定できません
となります。

Textは取得できていますが、設定ができないプロパティのようです。
Selectして、Selectionに対して設定すればよいかな?と思いましたが、やはりダメ・・・

どうにかして組織図のTextをVBAから設定する方法はないものでしょうか。
(ちなみにWordは、Rangeを利用してなんとか?変更可能でした)

Sub 組織図()

Dim MyShape As Object
Dim ObjS As Object
Dim TempStr As String

For Each MyShape In ActiveSheet.Shapes
 If MyShape.Type = 21 Then
  For Each ObjS In MyShape.GroupItems
   On Error Resume Next
   TempStr = ObjS.TextFrame.Characters.Text
   On Error GoTo 0
   If TempStr <> "" Then
    ObjS.TextFrame.Characters.Text = "あああ"
   End If
  Next
 End If
Next

End Sub

コメント(3)

グループ化されている状態ではCharacters.Textの値を変更できないようです。
(2000では、個別でShape名を指定してもグループ化状態ではだめでした)

「グループ解除→テキスト設定→再グループ」
とすればうまくいきそうな気がしますが…。
グループ化された図形や、組織図などの図表ではVBAでテキストを変更することは出来ないようです。

しかし直接変更する必要がなければ、図形のテキストをセル参照にしておいてセルの値を書き換えてやることで組織図に反映することが出来ます。
これなら新しいバージョンのExcelで開いてもそのまま動作させることが出来ますが、いかがでしょうか。

やむさん

>グループ解除→テキスト設定→再グループ」
>とすればうまくいきそうな気がしますが…。

おお!おっしゃるっ通りでした。

組織図は、TypeもGroupではないし、手動操作で右クリックでグループ化解除できないので、
グループ解除しようという発想がありませんでした。
思えば、ForEachで要素が取れるので、シェイプの集合体ですよね。

解決しました。
ありがとうございました!


ミスキタさん

>グループ化された図形や、組織図などの図表ではVBAでテキストを変更することは出来ないようです

はい。2003では、組織図は単にグループ化されたシェイプなこと、初めて理解しました。

>しかし直接変更する必要がなければ、図形のテキストをセル参照にしておいてセルの値を書き換えてやることで組織図に反映することが出来ます。

なるほど!
こんな手法もあるのですね。

>これなら新しいバージョンのExcelで開いてもそのまま動作させることが出来ますが、いかがでしょうか。
2007以降でも、その参照設定は有効なのですね。
すばらしいです。

やむさん、ミスキタさん、
すっきりしました。質問して、よかった!

ご回答、ほんとうにありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Excel(エクセル)活用 更新情報

Excel(エクセル)活用のメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。