如何在 Visio 中使用 OLE 自動化

文章翻譯 文章翻譯
文章編號: 309603 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

簡介

本文包含關於如何使用 Microsoft Visual Basic 或 Microsoft Visual Basic 的應用程式 (VBA) 來自動化 Microsoft Office Visio2from 其他 Microsoft Office 程式。

Microsoft 僅,為了說明提供程式設計範例,不提供任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已熟悉使用我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能,但它們不會修改這些範例以提供附加功能或建構程序,以符合您特定需求。

自動化的概觀

在 Visual Basic 中的自動化 (也稱為 OLE 自動化) 是控制從另一個程式的程序的程式或外部的開發工具。您可以自動化任何程式中含有 Visual Basic 物件模型。物件模型是程式的可用的物件或 Visual Basic 在 公開 的階層式集合。

比方說 Microsoft Visio 物件模型包含物件如:
  • 應用程式/全域物件
  • 文件物件
  • 頁數物件
  • 主要的物件
  • 選取範圍物件
  • 圖形物件
  • 視窗物件
這些物件的每個具有唯一集的方法和所需在 Visual Basic 中使用它們的屬性。比方說圖形物件可代表您可以使用指標來選取的 Visio 繪圖頁上的任何物件。因此,Shape 物件可以是一個圖形、 群組、 輔助線、 一個控制項或一個已連結的另一個程式中的物件,內嵌,匯入 Visio 繪圖。

使用者入門

本文的程式碼範例示範如何控制 Visio 從 Microsoft Office 2007,Microsoft Office 2003,Microsoft Office 2002,Microsoft Visual Basic 6.0 或任何包含 Visual Basic 開發工具的程式。若要自動化 Visio,請依照下列四個主要步驟執行:
  1. 加入 Visio 型別程式庫的參考。
  2. 宣告變數為 Visio 物件類型 (通常 Visio.Application 或 Visio.Documents)。
  3. 將 GetObject 或 CreateObject 方法指派給您在步驟 2 中宣告的物件變數。
  4. 使用 Visio 物件的屬性、 方法和子物件自動 Visio。

步驟 1: 新增 Visio 型別程式庫的參考

如果要將參考加入至 Visio 型別程式庫使用 Microsoft Office 應用程式 (例如 Microsoft Office XP 或 Office 2003,請依照下列步驟執行:
  1. 在 Access、 PowerPoint、 Excel 或 Word 在 [工具] 功能表上指到 [巨集],然後按一下 [Visual Basic 編輯器]。
  2. 按一下 [工具] 功能表 引用項目

    附註若要將使用 Microsoft Visual Basic 6.0 中參考按一下 [專案] 功能表上的 [參考]。
  3. 在 [可引用的項目 清單,請在 [按一下] 以選取其中一個下列的核取方塊中您所使用的 Visio 版本而定:
    • 對於 Visio 2007 按一下以選取 [Microsoft Visio 12.0 型別程式庫] 核取方塊。
    • 對於 Visio 2003 按一下以選取 [Microsoft Visio 11.0 型別程式庫] 核取方塊。
    • 對於 Visio 2002 按一下以選取 [Microsoft Visio 2002 型別程式庫] 核取方塊。
當您加入 Microsoft Visio 型別程式庫參考時,Microsoft Visio 線上說明] 及 [Visio 物件模型,可以存取您的程式。 因為參考會儲存每個專案中,您必須加入 Visio 型別程式庫參考您要用來自動化 Visio 每一個 Visual Basic 或 VBA 專案。

步驟 2: 宣告物件變數

若要為特定的 Visio 物件類型,例如 Visio.Application、 Visio.Documents 或 Visio.Page 宣告 Visio 物件變數,維度一變數。

明確宣告物件型別就稱為 早期繫結,因為控制器應用程式會連接或 繫結 至 Visio 應用程式在編譯階段 (而不是在執行階段物件。這可讓您存取 Visio 自動清單和即時線上說明,並允許程式碼更有效率地執行。

如需有關物件繫結的資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
138138晚期,識別碼,早期繫結類型請盡量在 VB 中的應用程式
下列範例 Visual Basic 引數宣告變數 AppVisio 做為物件型別 Visio.Application:

   Dim AppVisio as Visio.Application
				

步驟 3: 設定變數

若要啟動 Visio,您可以使用下列兩個 Visual Basic 方法:
  • CreateObject
  • GetObject
主要的差異是 Visio 的 Visio 的 CreateObject 方法會建立新的執行個體,GetObject 方法使用已在執行執行個體。您也可以使用 GetObject 將物件變數設定為特定的 Visio 文件。

下列範例引數將 AppVisio 變數設定為使用 [CreateObject Visio 應用程式函式:
   Dim AppVisio as Visio.Application

   Set AppVisio = CreateObject("Visio.Application")
				
在某些情況下您可能要如果 Visio 已經在執行,但建立新的執行個體,如果 Visio 正在執行,請使用現有的 Visio 執行個體。若要執行這項作業,建立使用 CreateObject 方法 GetObject 方法將失敗,事件中,這個範例程式碼所示的錯誤處理常式:
   Dim AppVisio As Visio.Application

   On Error Resume Next

   Set AppVisio = GetObject(, "visio.application")

   If AppVisio Is Nothing Then
      Set AppVisio = CreateObject("visio.application")
   End If

				
附註 您也可以使用 CreateObject 函式來建立 Visio 也就是執行個體不可見。例如:
Set AppVisio = CreateObject("Visio.InvisibleApp")
				
您然後可以使用 Application 物件看得見] 屬性來控制,是否執行個體為可見。

您可以使用 InvisibleApp 物件與 CreateObject 函式。嘗試使用的 GetObject 函式將會失敗。無法使用的 Visio 版本早於 Microsoft Visio 2000 中 InvisibleApp 物件。

步驟 4: 使用 Visio 物件、 方法和屬性

完成步驟 1 到 3 後,您可以使用 [Visio 物件變數,來自動化 Visio。

下列範例巨集會使用自動化來啟動 Visio,建立基本圖] 範本為基礎的一個新繪圖 (文件)、 卸除一個矩形、 新增一些文字和儲存繪圖及結束 Visio。
Sub AutoVisio()

   
   Dim AppVisio As Visio.Application  ' Declare an Instance of Visio.
   Dim docsObj As Visio.Documents     ' Documents collection of instance.
   Dim DocObj As Visio.Document       ' Document to work in.
   Dim stnObj As Visio.Document       ' Stencil that contains master.
   Dim mastObj As Visio.Master        ' Master to drop.
   Dim pagsObj As Visio.Pages         ' Pages collection of document.
   Dim pagObj As Visio.Page           ' Page to work in.
   Dim shpObj As Visio.Shape          ' Instance of master on page.

   ' Create an instance of Visio and create a document based on the
   ' Basic Diagram template. It doesn't matter if an instance of
   ' Visio is already running, CreateObject will run a new one.
   Set AppVisio = CreateObject("visio.application")

   Set docsObj = AppVisio.Documents

   ' Create a document based on the Basic Diagram template that
   ' automatically opens the Basic Shapes stencil.
   Set DocObj = docsObj.Add("Basic Diagram.vst")

   Set pagsObj = AppVisio.ActiveDocument.Pages

   ' A new document always has at least one page, whose index in the
   ' Pages collection is 1.
   Set pagObj = pagsObj.Item(1)

   Set stnObj = AppVisio.Documents("Basic Shapes.vss")
   Set mastObj = stnObj.Masters("Rectangle")

   ' Drop the rectangle in the approximate middle of the page.
   ' Coordinates passed with the Drop method are always inches.
   Set shpObj = pagObj.Drop(mastObj, 4.25, 5.5)

   ' Set the text of the rectangle.
   shpObj.Text = "This is some text."

   ' Save the drawing and quit Visio. The message pauses the program
   ' so you can see the Visio drawing before the instance closes.
   DocObj.SaveAs "MyDrawing.vsd"
   MsgBox "Drawing finished!", , "AutoVisio (OLE) Example"

   ' Quit Visio.
   AppVisio.Quit

   ' Clear the variable from memory.
   Set AppVisio = Nothing

End Sub
				

?考

Microsoft Visio 開發 o 人 h 員 ? 工 u 具 ? Web 站台

如需有關如何自動化 Visio 的詳細資訊,請造訪下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/office/aa905478.aspx
如需有關如何開發 Microsoft Visio 解決方案,請造訪下列 Microsoft Web 網站:
http://msdn2.microsoft.com/en-us/library/aa217846(office.10).aspx

Visio 軟體開發套件

如果要下載 Visio 2002 軟體開發套件,請造訪下列 Microsoft 網站:
http://www.microsoft.com/downloads/details.aspx?familyid=d2845e80-6634-4703-9ad9-7e440ede12d7&displaylang=en

如果要下載 Visio 2003 軟體開發套件,請造訪下列 Microsoft 網站:
http://www.microsoft.com/downloads/details.aspx?familyid=557120bd-b0bb-46e7-936a-b8539898d44d&displaylang=en

新聞群組

下列的對等新聞群組是可用來協助您與 Visual Basic 的其他使用者互動的應用程式:
microsoft.public.vb.ole.automation
microsoft.public.visio.developer.vba

Visual Basic 說明

如需有關如何使用該 CreateObject 函式在 Visual Basic 編輯程式中,請按一下 [說明] 功能表上的 [Microsoft Visual Basic 說明,並在 [搜尋] 方塊中輸入 createobject 函式 再按一下 [搜尋] 以檢視所傳回的主題。

如需有關如何使用該 GetObject 函式在 Visual Basic 編輯程式中,請按一下 [說明] 功能表上的 [Microsoft Visual Basic 說明,並在 [搜尋] 方塊中輸入 getobject 函式 再按一下 [搜尋] 以檢視所傳回的主題。

屬性

文章編號: 309603 - 上次校閱: 2007年4月11日 - 版次: 4.1
這篇文章中的資訊適用於:
  • Microsoft Office Visio Standard 2007
  • Microsoft Office Visio Professional 2007
  • Microsoft Office Visio Standard 2003
  • Microsoft Office Visio Professional 2003
  • Microsoft Visio 2002 Standard Edition
  • Microsoft Visio 2002 Professional Edition
關鍵字:?
kbmt kbautomation kbprogramming kbvba kbhowto KB309603 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:309603
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com