VISIO 2007 VBA...
Transcript of VISIO 2007 VBA...
第69回MSDN オフライン セミナー
VISIO 2007VBA プログラミング入門
マクロソフト株式会社 Visioグループ
テクノロジースペシャリスト
木村 佳代
ゕジェンダ
Visio ソリューションの例
Visio オブジェクトモデル
VBA サンプルコード、TIPS
Visio 2007 新機能
Visio ソリューションの公開
Visio ソリューションの開発
Visio ソリューションは実物をモデル化した図形(シェプ)と図面に対して特定の制御を行なうプログラムの組み合わせ
Visio ソリューションの例
Microsoft Office Visio 内部統制文書化ツール
http://www.microsoft.com/downloads/details.aspx?FamilyId=ABB8F9BB-952A-4160-A664-77018DD765A3&displaylang=ja
フォルダアクセス権マップ
http://www.visio.jp/dl/accessright/accessright.html
Web プレゼンス
http://www.visio.jp/dl/visWebPresence/index.html
Microsoft Active Directory Topology Diagrammer (ADTD)
http://www.microsoft.com/downloads/details.aspx?familyid=cb42fc06-50c7-47ed-a65c-862661742764&displaylang=en
SQL Server 2005 Data Mining Add-ins for Office system
http://www.microsoft.com/downloads/details.aspx?FamilyId=7c76e8df-8674-4c3b-a99b-55b17f3c4c51&displaylang=ja
Microsoft®
Office Visio®
2007 で実現
内部統制の整備には、業務プロセスの可視化とプロセスに存在するリスクの可視化が必要となります。企業には様々な業務プロセスが存在し多くは複数の部署が関連する業務プロセスです。業務プロセスの文書化は、内部統制の整備作業でもっとも時間のかかるプロセスの1つといわれており、この作業を効率化することが内部統制の早期構築につながります。Visio 2007 では、業務フローチャートを効率的に作成するための機能が大幅に強化されています。
コンプライアンス強化と業務効率化を実現
直感的な操作を実現する、使い慣れたOffice準拠のンターフェスで見栄えのする業務フロー図をすばやく作成
無料の内部統制文書化ツールを活用することで文書化作業をより効率化できます。
作図補助・自動化機能で作成時間を短縮図形同士の接続を自動化するオートコネクトはワンクリックで図形の均等配置とコネクタの接続を実現図形を移動しても、線の接続関係は維持されるので手作業で修正する必要もありません。コネクタ上に図形を配置するだけで、自動的にコネクタが分割、再接続されます。豊富に用意された作図を効率化するスマートシェプやテンプレートを利用して作図を効率化します。
ビジネスデータとVisio図面の統合が簡単にデータをVisioへインポート、リンク
ExcelやSQL Serverなどのデータベースとドラッグ ゕンド ドロップする簡単にリンクしVisioの図形データに取り込みが可能。
ビジネスデータとVisio図面の統合が簡単にVisioからデータをエクスポート
部門、処理内容、リスク、コントロールなどをVisioの図形データに入力し、レポートに出力すれば、RCMや業務記述として出力可能レポートはExcel、HTML、Visio図面、XMLなどの形式で出力可能
Excelに出力したRCMのメージ
リスクやコントロールを可視化図形に格納されたリスクやコントロールのデータを図形の横や上に表示したり、データバーやゕコンなどを使った視覚的な表現が可能重要度の高いリスクや実施頻度の高い統制などを強調表示することで、的確な統制活動を実現
フロー図
業務記述RCM
内部統制文書化ツールで業務プロセスを文書化業務プロセスの文書化を効率的に行うための専用テンプレートWebサトから無料でダウンロードできます。リスク、コントロールを可視化する専用のシェプを用意Excelで作成したRCMやプロセス情報からVisioの業務フロー図を生成Visioで作成、編集した業務フロー図からRCM、業務記述書を簡単に生成Excelに加えた変更をVisio図面に簡単に反映
Microsoft Office Visio 内部統制文書化ツール: http://www.microsoft.com/japan/office/2007/visio/naibutousei/default.mspx
フォルダ ゕクセス権マップ
フゔルサーバー上の共有フォルダの構成とゕクセス権をVisioやExcelに出力し、設定状況を一目で把握できるツール
Active Directoryから共有フォルダのリストを取得可能
VisioやExcelへ出力する際、階層の深さを指定可能
共有ゕクセス権、 NTFS ゕクセス権の設定状況を表示
指定したゕカウントが設定されているフォルダをビジュゕルに検索
Web プレゼンス テンプレート
Visio で作成した図面にMicrosoft Office Communicator のプレゼンス情報を付与しWeb形式で保存
図面上でリゕルタムにプレゼンス情報を把握
応対可能
退席中
オフラン
取り込み中
プレゼンスゕコン
ダウンロードURL : http://www.visio.jp/dl/visWebPresence/index.html
Active Directory Topology Diagrammer(ADTD)
ActiveX Data Objects (ADO) を利用してActive Directory 構造、Exchange 組織をVisio に出力するツール
Active Directory トポロジー
ドメン、サト、OU構造
Exchange 組織
SQL Server 2005Data Mining Add-ins for Office system
SQL Server 2005 Analysis Services のデータマニング モデルの処理結果をVisio 2007 上にレポートする Visio のゕドン ツール
Visio の開発手法
図形開発クリップゕート的な図形の作成 (図形編集機能)
形状や動きが変わる図形の作成 (シェプシート)
VBAよく使う機能や操作の自動化
マクロの記録機能を活用
ゕドン/ゕドオンVisio 機能の拡張
VB、VB.NET、C#、C++ などの開発言語を利用
Visual Studio Tools for Office を利用すると便利
Visio 開発手法まとめ
Visio 開発プラットフォーム
12
シェプ シート
シェプの立ち振る舞いを定義
全オブジェクトにシェプシートが存在
スプレッド シート形式セクション、行、セルで構成
シェプシートの開き方
[ウゖンドウ] メニュー[シェプシートの表示]をクリック
開発者モードで実行時しシェプのショートカット メニューから起動[ツール]メニュー – [オプション] –[詳細設定]
Visual Basic for Applications (VBA)
Visioには 他のOffice と同様にVBA プログラミング環境が用意されている
VBよりも高速に動作
デバックが容易
マクロの記録
1. [ツール] メニュー - [マクロ] - [新しいマクロの記録] をクリックします。
2. [マクロ名] ボックスにマクロ名を入力します。
3. [OK] をクリックし、マクロの記録を開始します。
4. マクロとして記録する操作を実行します。マクロの記録時は、マウスを使用してコマンドとオプションをクリックでき、図面上の図形およびオブジェクトで作業ができます。
5. マクロの記録を停止するには、[記録]ツールバーの で [記録終了 ] をクリックします。Visual Basic Editor で記録されたコードを確認できます。
Visio オブジェクト モデル
特別なオブジェクト
ThisDocument オブジェクト
Visio フゔルを表すDocument オブジェクト
プロジェクト内のコードから参照するとそのプロジェクトのDocument オブジェクトを返す
Global オブジェクト
Visio フゔルの VBA プロジェクト内のコードのみで使用
オブジェクトに直接ゕクセス
ページとドキュメント
Document オブジェクトの利用
図面を開くPublic Sub OpenDocument_Example()
'既存図面を開くには Open メゾットを利用
'新規図面を作成するには Add メゾットを利用
Dim vsoDocument As Visio.Document
'既存の図面を開く
Set vsoDocument = Documents.Open("C:¥Demo¥Sample.vsd")
'新規図面を開く
Set vsoDocument = Documents.Add("")
'テンプレートを開く
Set vsoDocument = Documents.Add("C:¥Demo¥Sample.vst")
End Sub
Document オブジェクトの利用
図面を閉じるSub DocumentClose_Example()
'図面を閉じる
ThisDocument.Close
End Sub
Page オブジェクトの利用
ページの追加Public Sub Add_Page_Example()
'ページを追加する
Set pagObj = ThisDocument.Pages.Add
'ページ名を変更する
For Each objPage In ThisDocument.Pages
I = I + 1
objPage.Name = "図面" & I
Next
End Sub
シェプ
Shape オブジェクトの利用
シェプ数をカウントするSub Shape_Count_Example()
Dim oShapes As Visio.Shapes
Dim oShape As Visio.Shape
Dim Counter As Integer
Set oShapes = ActivePage.Shapes
Counter = 0
‘図面上のシェプ数をカウント
For Each oShape In oShapesIf oShape.Type = visTypeShape Then
Counter = Counter + 1
End IfNext
Debug.Print Counter
End Sub
Cell オブジェクトの利用
シェプシートの参照
Sub ShapeCellsSRC_Example()
Dim shpObj As Visio.shape
'ゕクテゖブなシェプを取得
Set shpObj = ActiveWindow.Selection(1)
‘ShapeData セクションの1行目、Valueセルの値を設定‘shape.CellsSRC( <Section>, <Row>, <Cell>)
shpObj.CellsSRC(visSectionProp, 0, visCustPropsValue).FormulaU = 12
End Sub
ローカル名と汎用名
Visio 2000 以降、ローカル名と汎用名の両方を使用してVisio オブジェクトを参照できる
Visio 2003 以降、シェプシートではセル数式と値に汎用名だけが表示される
汎用名の利用を推奨
例: “処理” マスタシェプ
ローカル名 : Master.Name = “処理”
汎用名 : Master.NameU = “Process”
シェプの取得
Public Sub GetShape_Example()
Dim vsoShape As Visio.Shape
'ゕクテゖブページ内のシェプ一覧を表示
For Each vsoShape In ActivePage.Shapes
Debug.Print vsoShape.NameU
Next
End Sub
ステンシルの取得
Sub GetStenci_Example()
Dim vsoDocument As Visio.Document
Dim vsoDocuments As Visio.Documents
Set vsoDocuments = Visio.Documents
'ステンシルの一覧を表示
For Each vsoDocument In vsoDocuments
Debug.Print vsoDocument.Name
Next
End Sub
図面ページにマスタシェプをドロップする
Public Sub DropShape_Example()
Dim stencil As Visio.Document, mstCircle As Visio.Master
'ステンシルを指定
Set stencil = ThisDocument.Application.Documents.Open("BASFLO_M.VSS")
ThisDocument.Application.Windows(ThisDocument.Index).Activate
'マスタシェプを指定
Set mstCircle = stencil.Masters.ItemU("Process")
‘シェプをページにドロップ X座標、Y座標を指定
‘座標はンチで指定
ThisDocument.Pages(1).Drop mstCircle, 2, 10
End Sub
Connect オブジェクト
Visio 固有のオブジェクト
図形と図形の接続関係を表す
接続元(GlueFrom)、接続先(GlueTo)
'GlueTo メソッドを使用して 1 次元図形の始点を
‘下の 2 次元図形の右上の頂点 (Geometry1.X3) に接着
vsoCellGlueFromBegin.GlueTo vsoCellGlueToObject
'GlueTo メソッドを使用して 1 次元図形の終点を
‘上の 2 次元図形の左下の頂点 (Geometry1.X1) に接着
vsoCellGlueFromEnd.GlueTo vsoCellGlueToObject2
AutoConnectオブジェクトの利用
コネクタ接続Public Sub AutoConnectShapes()
Dim vsoShape1 As Visio.Shape
Dim vsoShape2 As Visio.Shape
Dim vsoConnectorShape As Visio.Shape
Set vsoShape1 = Visio.ActivePage.Shapes("判断")
Set vsoShape2 = Visio.ActivePage.Shapes("処理")
Set vsoConnectorShape = Visio.ActivePage.Shapes("動的コネクタ")
vsoShape1.AutoConnect vsoShape2, visAutoConnectDirRight, vsoConnectorShape
End Sub
Visio 2007 に追加されたオブジェクト
データソースへの接続、図形とデータのリンクデータグラフゖック表示、図形の自動接続(オートコネクト) など、Visio 2007 の新機能をプログラムにより制御可能
DataColumn
DataColumns
DataConnection
DataRecordset
DataRecordsets
GraphicItem
GraphicItems
DataRecordset オブジェクトの利用
データ接続Public Sub AddDataRecordset_Example()
Dim strConnection As String
Dim strCommand As String
Dim strOfficePath As String
Dim vsoDataRecordset As Visio.DataRecordset
strOfficePath = Visio.Application.Path
strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" _
& "User ID=Admin;" _
& "Data Source=" + strOfficePath + "SAMPLES¥1041¥ASTMGT.XLS;" _
& "Mode=Read;" _
& "Extended Properties=""HDR=YES;IMEX=1;MaxScanRows=0;Excel 12.0;"";" _
& "Jet OLEDB:Engine Type=34;"
strCommand = "SELECT * FROM [ネットワーク機器$]"
Set vsoDataRecordset = ActiveDocument.DataRecordsets.Add(strConnection, strCommand, 0, “ネットワーク機器")
End Sub
DropLinked メゾットの利用
データをリンクした図形の作成Public Sub DropLinked_Example()
Dim vsoShape As Visio.Shape
Dim vsoMaster As Visio.Master
Dim dblX As Double
Dim dblY As Double
Dim lngDataRowID As Long
Dim vsoDataRecordset As Visio.DataRecordset
Dim intRecordesetCount As Integer
intRecordsetCount = Visio.ActiveDocument.DataRecordsets.Count
Set vsoDataRecordset = Visio.ActiveDocument.DataRecordsets(intRecordsetCount)
Set vsoMaster = Visio.Documents("SERVER_M.VSS").Masters.ItemU("Database server")
dblX = 1
dblY = 10
lngDataRowID = 1
Set vsoShape = ActivePage.DropLinked(vsoMaster, dblX, dblY, vsoDataRecordset.ID, lngDataRowID, True)
End Sub
Selection.DataGraphic プロパテゖの利用
データ グラフゖックの適用Public Sub ApplyDataGraphic()
Dim vsoSelection As Visio.Selection
'ゕクテゖブ ウゖンドウ内の全オブジェクトを選択
ActiveWindow.SelectAll
Set vsoSelection = ActiveWindow.Selection
'データグラフゖックを適用
vsoSelection.DataGraphic = ActiveDocument.Masters("カスタムデータグラフゖック")
End Sub
シェプシートからのプログラム実行
利用セクション
[Actions] セクション
[Events] セクション
関数
RUNADDON関数マクロやゕドオンを実行
CALLTHIS関数プロシージャの呼び出し
Visio ソリューションの公開
ステンシル(.vss および .vsx フゔル)
テンプレート(.vst および .vtx フゔル)
Visio ソリューション ラブラリ ゕドオン(.vsl フゔル)
実行可能形式のゕドオン(.exe フゔル)
ヘルプ フゔル(.chm および .aw フゔル)
フゔルパスの指定
Visio が既定でフゔルの検索や保存をする場所を指定
[ツール] メニューの [オプション] - [詳細設定] タブ[フゔル パスの設定] で指定
既定設定 ( Microsoft Windows Vista の場合 )
個人用図形
ユーザー¥ユーザー名¥ドキュメント¥個人用図形
図面
ユーザー¥ユーザー名¥ドキュメント
テンプレート、ステンシル、ヘルプ
Program Files¥Microsoft Office¥Office12¥言語
ゕドン
Users¥ユーザー名¥AppData¥Microsoft¥Addins
開発リフゔレス
ソフトウェゕ開発キット(SDK)Visio の図形を設計、開発およびプロダクテゖブ ツールです。スマート シェプを使用したプロジェクト管理、仕様と設計、開発、検証を容易にするカスタム作業環境を提供します。
ヘルプVisio 2007 を使用したソリューションの開発の概要、プログラミング タスク、サンプル、リフゔレンスが含まれています。
参考情報
MSDN Visio 技術資料一覧http://www.microsoft.com/japan/msdn/office/understanding/visio.aspx
- SDK のダウンロード、情報ラブラリ- Visio カスタマズ テクニック 講座
Visio 自習書http://www.microsoft.com/japan/office/2007/visio/trainingtext.mspx
- 作図編、シェプシート編、VBA編ほか、他製品との連携も用意
Visio ブログhttp://blogs.msdn.com/visioj/
Visio コミュニテゖ サトhttp://www.visio.jp/
Visio 2007 製品体系
機能
一新した「作業の開始」画面
オートコネクト機能
テーマ機能
隠し情報の削除
Web や PDF, XPS 形式での共有
機能
データ リンク、データ グラフゖック機能
ピボット ダゕグラム機能
新しいテンプレート(ITIL 図、バリュー ストリーム マップ)
テンプレートのサンプル表示
Standard の機能全て
主な用途
専門的な作図
システム管理、業務フロー、仕様書レゕウト図など
データと連携をした作図
データと図面の一元管理
情報の可視化と分析
主な用途
図を含んだ文書作成
企画書、提案書、組織図など
まとめ
Visio の開発手法
クリップゕート的な図形の作成 (図形編集機能)
形状や動きが変わる図形の作成 (シェプシート)
よく使う機能や操作の自動化 (VBA)
ゕドン/ゕドオン (Visual Studio / VSTO)
VBA プログラミング環境が用意
Office VBA の知識をVisio VBA でも活用できる
Visio 2007 の可能性は無限大ぜひご活用ください!!
Visio Professional 2007
知って、試して、トクするキャンペーン実施中!!
http://go.microsoft.com/?linkid=7705458
Webcast (Video)もあります。
© 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.