VISIO ユーザー会
第1回 セミナー
VISIO 2007
VBA を利⽤した “データの可視化”
マイクロソフト ディベロップメント株式会社
オフィスグローバリゼーション開発統括部
プログラムマネージャ
⼭岸真⼈
マイクロソフト株式会社 Visioグループ
テクノロジースペシャリスト
⽊村 佳代
アジェンダ
Visio 2007 を利⽤した
“データの可視化” 活⽤例
Visio 2007 データ接続オートメーション
“データの可視化” 3ステップ
幅広いユーザーと共有できる図⾯を使⽤した
「情報の伝達」
複雑な情報の理解を
深めるための
「情報の可視化」
傾向や問題を特定し、
⾏動を取るための
「情報の把握・分析」
Visio 2007
データの可視化を実現する、ビジネス ダイアグラム作成ツールとして進化
Visio 2007 を利⽤した
“データの可視化” 活⽤例
Visio 図⾯
連携データ先
業務フロー図
業務内容、進捗情報、担当者リスト、コスト情報
病棟レイアウト図
病床管理、患者管理
ネットワーク図
機器情報、設定情報、リース情報
座席表
社員リスト、電話番号、メール アドレス
フロア図
資産情報、什器
Visio 2007
データ接続オートメーション
データソースと連動するソリューション開発のための API
Data Import / Data Refresh API
図⾯に OLEDB/ODBC/XML データをインポート、更新
Data Linking API
インポートしたデータと図形をリンク
Data Graphics API
サンプル アプリケーションの作成
IT 資産情報の可視化
ネットワーク上のサーバーの状態を
可視化し、現状の把握、分析をする
簡易アプリケーションを VBA で開発します
管理者、ハードウェア情報 ソフトウェア情報 IP アドレス、稼働状況データ接続の流れ
DataGraphic
GraphicItem
GraphicItem
GraphicItem
データ グラフィックを 適⽤して図形データを可視化Shape
DataRecordset ⾏と 図形データ フィールドを リンクデータ接続の流れ
ステップ 1
データのインポート
オブジェクトとコンセプト
インポートの⽅法と接続のモデル
更新と同期
更新
オブジェクトとコンセプト
Data Connection
Visio からデータベースへの接続を抽象化
Data Recordset
Visio 上のデータ ストアや、データベースとの同期、アクセス⽅法を管理
Data Column
データ形式やデータ型の変換機能
データのインポート
接続モデル
接続する場合
接続しない場合
DataRecordsets.Add(
string connectionString,
string commandString,
integer recordsetOptions,
string friendlyName
)
DataRecordsets.AddFromXML(
string adoXMLFragment,
integer recordsetOptions,
string friendlyName
)
DataRecordsets.Add(
string connectionString,
string commandString,
integer recordsetOptions,
string friendlyName
)
DataRecordsets.Add
外部データと Visio 図⾯を接続し、インポート
接続⽂字列
コマンド⽂字列
オプション
任意の表⽰名
Excel との接続
'Excel 接続⽤
'接続⽂字列、コマンド⽂字列、DataRecordset オブジェクトを宣⾔
Dim strConnection_Excel As String Dim strCommand_Excel As String
Dim vsoDataRecordset_Excel As Visio.DataRecordset
'接続⽂字列。ローカル ドライブにあるファイルに接続
strConnection_Excel = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" _
& "C:¥MSDN¥ASTMGT.XLS;" _
& "Extended Properties=Excel 8.0;"
'コマンド⽂字列。⼀枚めのシート内のデータをすべて取得
strCommand_Excel = "SELECT * FROM [Sheet1$]"
'DataRecordset オブジェクトを作成
Set vsoDataRecordset_Excel = ActiveDocument.DataRecordsets.Add(strConnection_Excel, strCommand_Excel, 0, "ネットワーク機器")
Access との接続
'Access 接続⽤
'接続⽂字列、コマンド⽂字列、DataRecordset オブジェクトを宣⾔
Dim strConnection_Access As String Dim strCommand_Access As String
Dim vsoDataRecordset_Access As Visio.DataRecordset
'接続⽂字列。ローカル ドライブにあるファイルに接続。パスワード等の設定は割愛
strConnection_Access = "Provider=Microsoft.Jet.OLEDB.4.0;" _ & "Data Source=" _
& "C:¥MSDN¥network_status.mdb;" _ & "Persist Security Info=False;“
'コマンド⽂字列。[ネットワーク状態] テーブル内のデータをすべて取得
strCommand_Access = "SELECT * FROM ネットワーク状態"
'DataRecordset オブジェクトを作成
Set vsoDataRecordset_Access = ActiveDocument.DataRecordsets.Add(strConnection_Access, strCommand_Access, 0, "ネットワーク状態")
ステップ
2
データのリンク
更新
オブジェクトとコンセプト
リンクの⽅法
オブジェクトとコンセプト
RowID
1
42
2
27
3
12
1 リンク = 1 RowID Ù 1 ShapeID
リンクの⽅法
リンク図形の作成⽅法:
Page.DropLinked (
1
⾏ Ù
1
図形)
Page.DropManyLinkedU (
n
⾏ Ù
n
図形)
既存図形へのリンク⽅法:
Shape.LinkToData (
1
⾏ Ù
1
図形)
Selection.LinkToData (
1
⾏ Ù
n
図形)
Page.LinkShapesToDataRows (
n
⾏ Ù
n
図形)
DropLinked
図⾯上にデータとリンクした図形をドロップ (作成)
Page.DropLinked (
[Unknown] ObjectToDrop,
double x,
double y,
Long DataRecordsetID,
Long DataRowID,
Booloean ApplyDataGraphicAfterLink
)
Visio オブジェクト
x 座標
y 座標
DataRecordSet の ID
データ⾏の ID
オプション
Excel データとリンクした図形を作成
'Visio 図形オブジェクト、x 座標、y 座標、データ⾏ID格納⽤変数、等を宣⾔
Dim vsoShape As Visio.Shape Dim dblX As Double
Dim dblY As Double
Dim lngDataRowID As Long Dim i As Integer
Dim vsoMaster As Visio.Master
'サーバー図形の⼊ったステンシルを開く
Set vsoMaster = Visio.Documents.OpenEx("SERVER_M.vss", 4) .ItemU("Server")
'1 ⾏⽬から 10 ⾏⽬までのデータを図形にリンクして図⾯にドロップ
For i = 1 To 10 dblX = dblX + 20 dblY = dblY + 15 lngRowID = i
Set vsoShape = ActivePage.DropLinked(vsoMaster, _ dblX, _ dblY, _ vsoDataRecordset_Excel.ID, _ lngRowID, _ False) Next i
AutomaticLink
⾏の値と図形のプロパティを⽐較判断して⾏と図形を⾃動的にリンク
Selection.AutomaticLink(
(in) integer RecordsetID,
(in) safe-array columnNames,
(in) safe-array fieldTypes,
(in) safe-array fieldNames,
(in) bool BreakExistingLinks,
(out) safe-array ShapeIDs
)
DataRecordSet の ID
DataRecordset の列名
図形側のフィールド
図形側のフィールド名
オプション
リンクされた図形ID格納
Access データを⾃動リンク
'図形の選択オブジェクト、DataRecordset の列名、図形側のフィールドとフィールド名、リンクした図形を格納する配列を宣⾔
Dim vsoSelection As Visio.Selection Dim columnNames(1) As String Dim fieldTypes(1) As Long Dim fieldNames(1) As String Dim shapesLinked() As Long
'Access 側 (DataRecordset) の列名は [ネットワーク名] columnNames(0) = "ネットワーク名" '図形側は任意の図形データ fieldTypes(0) = Visio.VisAutoLinkFieldTypes.visAutoLinkCustPropsLabel '図形データのフィールド名は [ネットワーク名] fieldNames(0) = "ネットワーク名" '図⾯上の図形をすべて選択してオブジェクトに格納 ActiveWindow.DeselectAll ActiveWindow.SelectAll
Set vsoSelection = ActiveWindow.Selection
ʻ⾃動リンク実⾏、データグラフィックと連動しないようにオプションは 4 vsoSelection.AutomaticLink vsoDataRecordset_Access.ID, _ columnNames, _ fieldTypes, _ fieldNames, _ 4, _ shapesLinked
ステップ 3
データの表⽰
更新
オブジェクトとコンセプト
オブジェクトとコンセプト
データの インポート データの リンク データの 表示GraphicItem
DataGraphic Master
図形
オブジェクトとコンセプト
データの インポート データの リンク データの 表示DataGraphic Master
GraphicItems コレクションのコンテナ
GraphicItem
図形に追加された各データ グラフィック オブジェクト
データ グラフィックの作成
⽅法 1 – Visio UI で:
その 1: データ グラフィックの設定画⾯で作成
その 2: データ グラフィック マスタを
シェイプ シートで定義
⽅法 2 – プログラムで:
DataGraphic Master
オブジェクトを作成
GraphicItem
プロパティを定義
データ グラフィックの作成 は UI またはプログラムの両⽅で可能
データの インポート データの リンク データの 表示本⽇はこちら
データ グラフィックの適⽤
'図⾯上の図形をすべて選択してオブジェクトの格納
Dim vsoSelection As Visio.Selection
ActiveWindow.SelectAll
Set vsoSelection = ActiveWindow.Selection
'選択オブジェクトにデータグラフィック マスタを適⽤
データの更新
3 種類の基本的な更新⽅法
refresh メソッド:
DataRecordset.Refresh()
DataRecordset.RefreshFromXML()
更新間隔を指定:
DataRecordset.RefreshInterval
を設定
UI で:
[更新] ボタン
更新設定画⾯
各更新内容はログからアクセス可能:
DataRecordsetChanged:
イベント
DataRecordsetChangedEvent:
オブジェクト
データの更新
'Excel との同期を今すぐ実⾏
Visio.ActiveDocument.DataRecordsets(1).Refresh
'Access との同期は 20 分ごと
Visio.ActiveDocument.DataRecordsets(2).RefreshInterval = 20
今すぐ更新
20
分毎に更新
データ接続の流れ
DataGraphic
GraphicItem
GraphicItem
GraphicItem
データ グラフィックを 適⽤して図形データを可視化Shape
DataRecordset ⾏と 図形データ フィールドを リンク技術情報 リソース
-1-ダウンロード
Visio 2007 SDK
Visio ⾃習書
http://www.microsoft.com/japan/office/2007/visio/trainingtext.mspx
TechNet Visio 技術情報
http://www.microsoft.com/japan/technet/prodtechnol/visio/default.mspx
オンライン リソース
MSDN Visio 技術資料
http://www.microsoft.com/japan/msdn/office/understanding/visio.aspx
Visio ブログ
http://blogs.msdn.com/visioj/
Visio Tool box
技術情報 リソース
-2-その他
Visio.jp
http://www.visio.jp/
書籍
「
Visio 2003 デベロッパーズ バイブル」
http://www.seshop.com/detail.asp?pid=6030
Visio 2007 製品体系
機能
⼀新した「作業の開始」画⾯
オートコネクト機能
テーマ機能
隠し情報の削除
Web や PDF, XPS 形式での共有
機能
データ リンク、データ グラフィック機能
ピボット ダイアグラム機能
新しいテンプレート
(ITIL 図、バリュー ストリーム マップ)
テンプレートのサンプル表⽰
Standard の機能全て
主な⽤途
専⾨的な作図
システム管理、業務フロー、仕様書
レイアウト図など
データと連携をした作図
データと図⾯の⼀元管理
情報の可視化と分析
主な⽤途
図を含んだ⽂書作成
企画書、提案書、組織図など
© 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market
conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.