【入門編】図形へのデータ付与:Shape.CellsUプロパティを用いたカスタムプロパティ(シェイプデータ)の書き込み – Visio VBA解析バイブル

スポンサーリンク

Visio VBAの真髄:Shape.CellsUで「図形」を「データベース」へ変える極意

こんにちは。現場で泥臭い自動化を積み重ねてきたエンジニアです。
Visioを単なる「お絵描きツール」だと思っていませんか?もしそうなら、あなたはVisioが持つポテンシャルの1%も引き出せていないことになります。

Visioの真の価値は、「図形の中に情報を詰め込み、それをVBAで自在に操る」点にあります。今回は、脱・初心者を目指すあなたのために、図形にデータを流し込む最重要プロパティ「`Shape.CellsU`」の深淵を紐解いていきましょう。

1. なぜ「CellsU」なのか?:オブジェクトモデルの深層

Visioの図形(Shape)は、単なる線や四角形ではありません。その内側には「シェイプシート」と呼ばれる強力なパラメータ集が隠されています。

`Shape.CellsU`は、そのシェイプシートの特定のセルを、VBAのコードから直接書き換えるための「直接アクセス用インターフェース」です。

  • Cells vs CellsU: `Cells`は言語設定(ローカル)に依存しますが、`CellsU`はユニバーサル(英語名)。VBAで書くなら、将来的なバグを避けるために迷わず`CellsU`を使ってください。これがプロの流儀です。

2. シェイプデータに値を流し込む:実戦コード

例えば、「サーバー」という名前の図形に対して、`AssetID`というシェイプデータを書き込む処理を見てみましょう。

Sub SetShapeData()
Dim vsoShape As Visio.Shape
Dim vsoPage As Visio.Page

‘ アクティブページの最初の図形を取得
Set vsoPage = ActivePage
Set vsoShape = vsoPage.Shapes(1)

‘ 【重要】セクション名.行名.セル名 で指定する
‘ Prop.AssetID の値を “SRV-001” に書き換える
‘ 書式: “Prop.プロパティ名.Value”
vsoShape.CellsU(“Prop.AssetID.Value”).FormulaU = Chr(34) & “SRV-001” & Chr(34)

‘ ※FormulaUを使う理由:
‘ 文字列として値を代入する場合、ダブルクォーテーションで囲む必要があるため
‘ Chr(34) を使ってダブルクォーテーションを生成し、数式として流し込むのが鉄則。

MsgBox “データの書き込みが完了しました。”
End Sub

ここがポイント!

  • FormulaUプロパティ: 単に値を代入するのではなく、`.FormulaU` を使いましょう。Visioは「値」ではなく「数式」としてデータを管理しているため、これが最も堅牢です。
  • Chr(34): 文字列を流し込む際は、必ずダブルクォーテーションで囲う必要があります。これを忘れると「数式エラー」でVisioが悲鳴を上げます。

3. 初学者が必ずハマる「3つの落とし穴」

現場で何度も見てきた、初心者が陥る「なぜか動かない」現象を解決します。

① そのプロパティ、本当に存在しますか?

シェイプデータが存在しない状態で `CellsU` を呼び出すと、エラーが発生します。

  • 対策: `If vsoShape.CellExists(“Prop.AssetID.Value”, 0)` を使って、事前に存在チェックを入れましょう。

② Visioの保護機能(Lock)

図形がグループ化されていたり、保護(Protection)がかかっていると書き込みが拒否されます。

  • 対策: 書き込み前に `vsoShape.CellsU(“LockDelete”).ResultIU = 0` のように、保護を解除する一工夫が必要です。

③ セルの名称は「ユニバーサル」で

Visio画面上で「資産番号」と表示されていても、内部名は `Prop.Row_1` かもしれません。

  • 確認法: Visioの「開発」タブ → 「シェイプシートを表示」を開き、内部名を必ず確認してください。ここが全ての出発点です。

4. プロの視点:自動化の先へ

ここまでできれば、あなたはもうマクロの記録を卒業しています。
次に目指すべきは、「ExcelのリストからVisio図面を自動生成する」ことや、「図面のデータをボタン一つでSQLデータベースへ書き出す」といった統合管理です。

Visio VBAは、複雑なシステム構成図を「ただの絵」ではなく「生きているドキュメント」に変える魔法の杖です。

もしコードが動かなかったら、それはエラーではなく「あなたの知識が一段上のレベルに達するチャンス」です。まずは今回の `CellsU` を使い、自分の図形にIDを振ることから始めてみてください。

さあ、あなたのVisioを、ただの作図ツールから、真の設計プラットフォームへと進化させましょう。応援しています!

タイトルとURLをコピーしました