第 69 回 MSDN オフラインセミナー VISIO 2007 VBA プログラミング入門 マクロソフト株式会社 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 では 業務フローチャートを効率的に作成するための機能が大幅に強化されています リスクやコントロールを可視化 図形に格納されたリスクやコントロールのデータを 図形の横や上に表示したり データバーやゕ コン などを使った視覚的な表現が可能 重要度の高いリスクや実施頻度の高い統制などを 強調表示することで 的確な統制活動を実現 作図補助 自動化機能で作成時間を短縮 図形同士の接続を自動化するオートコネクトは ワンクリックで図形の均等配置とコネクタの接続を実現 図形を移動しても 線の接続関係は維持されるので 手作業で修正する必要もありません コネクタ上に図形を配置するだけで 自動的にコネクタが 分割 再接続されます 豊富に用意された作図を効率化するスマートシェ プや テンプレートを利用して作図を効率化します 内部統制文書化ツールで業務プロセスを文書化 業務プロセスの文書化を効率的に行うための専用テンプレート Webサ トから無料でダウンロードできます リスク コントロールを可視化する専用のシェ プを用意 Excelで作成したRCMやプロセス情報からVisioの業務フロー図を生成 Visioで作成 編集した業務フロー図からRCM 業務記述書を簡単に生成 Excelに加えた変更をVisio図面に簡単に反映 ビジネスデータとVisio図面の統合が簡単に データをVisioへインポート リンク ExcelやSQL Serverなどのデータベースと ドラッグ ゕンド ドロップする簡単にリンクし Visioの図形データに取り込みが可能 フロー図 ビジネスデータとVisio図面の統合が簡単に Visioからデータをエクスポート Excelに出力した RCMの メージ RCM 業務記述 部門 処理内容 リスク コントロールなどをVisioの図形データに 入力し レポートに出力すれば RCMや業務記述として出力可能 レポートはExcel HTML Visio図面 XMLなどの形式で出力可能 直感的な操作を実現する 使い慣れたOffice準拠の ンターフェ スで見栄えのする業務フロー図をすばやく作成 無料の内部統制文書化ツールを活用することで文書化作業をより効率化できます 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 2005 Data Mining Add-ins for Office system SQL Server 2005 Analysis Services の データマ ニング モデルの処理結果を Visio 2007 上にレポートする Visio のゕド ン ツール
VBA よく使う機能や操作の自動化マクロの記録機能を活用ゕドン / ゕドオン Visio 機能の拡張 VB VB.NET C# C++ などの開発言語を利用 Visual Studio Tools for Office を利用すると便利 Visio の開発手法 図形開発クリップゕート的な図形の作成 ( 図形編集機能 ) 形状や動きが変わる図形の作成 ( シェプシート )
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 oshapes If oshape.type = vistypeshape Then Counter = Counter + 1 End If Next 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 製品体系 機能 データリンク データグラフゖック機能 ピボットダゕグラム機能 新しいテンプレート (ITIL 図 バリューストリームマップ ) テンプレートのサンプル表示 Standard の機能全て 主な用途 専門的な作図 システム管理 業務フロー 仕様書レゕウト図など データと連携をした作図 データと図面の一元管理 情報の可視化と分析 機能一新した 作業の開始 画面オートコネクト機能テーマ機能隠し情報の削除 Web や PDF, XPS 形式での共有 主な用途図を含んだ文書作成企画書 提案書 組織図など
まとめ 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.