共用方式為


關於以圖形方式顯示資料 (Visio)

注意資料連線功能僅適用于Microsoft Visio Professional 2013的授權使用者。

在 Visio 中,資料連接有四種方式:

  • 連接至資料來源
  • 將圖形連結至資料
  • 以圖形方式顯示連結資料
  • 重新整理資料來源中已變更的連結資料、更新連結圖形,以及解決可能產生的後續衝突

一般而言,您會以上述順序採用這些方式,也就是說,您會先將 Visio 繪圖連接到資料來源,然後將繪圖中的圖形連結到資料來源的資料,以圖形方式顯示連結圖形中的資料,必要時重新整理連結資料。 在 Visio 物件模型中,每一種方式都有其相關聯的新物件與成員。 本主題處理第三與第四種方式,在 Visio 的圖形中以圖形方式顯示連結資料,以及重新整理資料。 如需有關其他資料連接方式的詳細資訊,請參閱下列主題:

若要以程式設計方式顯示連結資料,可以使用 Visio API 來顯示資料,Visio API 包含下列物件以及其相關的成員:

在您將 Visio 繪圖中的圖形連接到資料記錄集中的資料列之後,可以用程式以圖形方式顯示連接的資料。 例如,假設您的繪圖包含數個資料連接的圖形,每個都代表專案的特定完成階段。 您可以將進度列與圖形資料的特定項目建立關聯,例如專案完成百分比。 然後,您可以將進度列套用至專案圖形的選取範圍,並以視覺化方式顯示每個專案的完成進度。

資料圖形與圖形項目總覽

為了讓您更輕鬆地以圖形方式顯示資料,Visio 引進了資料圖形的概念,以及稱為資料圖形主圖形的Master物件類型,其以visTypeDataGraphic值表示于VisMasterTypes列舉中。 若要將visTypeDataGraphic類型的Master物件新增至Masters集合,您必須使用Masters.AddEx方法。

Visio 包括數種類型的主圖形,包括圖形主圖形。 當您建立圖形主圖形的實例時,它就變成圖形。 Visio 也包括填滿圖樣、線條圖樣和線條結尾主圖形,對這些主圖形就無法建立實例。 您將這些主圖形套用至圖形以將主圖形圖樣傳授至圖形。 資料圖形主圖形更像模式主圖形,因為您不會建立它們的實例。 您會將它們套用至圖形,就像您對線條圖樣和填滿圖樣主圖形所做的一樣。

資料圖形主圖形會對應至出現在 Visio UI 之 [ 資料圖形 ] 工作窗格中的資料圖形。 資料圖形主圖形是由一或多個 圖形專案所組成。 圖形專案是 Visio 圖形,設計成現成的視覺元件,您可以根據您定義的規則,以及相對於所指定圖形的位置,與圖形資料產生關聯,以圖形方式顯示該資料。

Visio 提供下列類型的圖形項目:

  • 文本 在相對於圖形的指定位置,將資料顯示為圖說文字。
  • 依值的色彩 根據圖形資料與特定值或值範圍之間的比較,變更圖形的色彩。
  • 資料橫條 使用橫條圖和圖形,在相對於圖形的指定位置顯示資料。
  • 圖示集 顯示一組圖示的其中一個,代表相對於圖形之指定位置的資料值或條件。

Visio 提供多種已經用圖形項目填滿的標準資料圖形。 如果您想要將資料圖形套用到圖形項目組合不同的圖形,可以建立自訂資料圖形。 建議您使用 Visio UI 來建立資料圖形,以及新增圖形項目到其中。

在 UI 中建立資料圖形

  1. 按一下 [資料] 索引標籤上的 [資料圖形]
  2. 按一下 [新增資料圖形],然後在 [新增資料圖形] 對話方塊中按一下 [新增項目]
  3. 在開啟的對話方塊中自訂項目,然後使用相同方法來新增自訂項目。

您也可以建立資料圖形主圖形,然後以程式用現有的圖形項目填滿它們。 您無法以程式建立圖形項目,但是可以自訂現有資料圖形的行為。 此外,可以使用程式法來變更圖形項目的行為和位置,以及定義個別圖形項目顯示資料方式的規則 (稱為運算式)。 運算式可以是 ShapeSheet 公式或任何其他合法的 ShapeSheet 運算式,或者是圖形-資料 (自訂屬性) 標籤。 若要設定圖形資料標籤的運算式,您必須以大括弧括住標籤 () {} ,然後將它當做GraphicItem.SetExpression方法的第二個 ( Expression) 參數傳遞。

在您建立包含自訂圖形項目組合的資料圖形並定義圖形項目的行為之後,就可以用程式將資料圖形套用到資料連結圖形。

資料圖形物件與成員

除了上一節所述的 visTypeDataGraphic 類型之 Master 物件之外,Visio 尚提供下列物件及它們在資料圖形 API 中的相關成員:

除了這些特殊資料圖形相關物件及其成員之外,還有其他數個成員 (更傳統的 Visio 物件) 組成部分的資料圖形 API。 例如, Shape.DataGraphicSelection.DataGraphic 屬性可讓您分別將資料圖形套用至圖形和選取範圍。 唯讀 的 Shape.IsDataGraphicCallout 屬性會指出特定圖形是否作為繪圖中的資料圖形專案運作。

將資料圖形套用至資料連接結圖形

下列範例顯示如何使用 Selection.DataGraphic 屬性,將您在 UI 中建立的現有自訂資料圖形套用至繪圖中的圖形選取範圍。 若要讓此程式碼運作,現有的自訂資料圖形必須命名為 「MyCustomDataGraphic」。或者,您可以將繪圖中現有資料圖形的名稱取代為程式碼中的 「MyCustomDataGraphic」。

Public Sub ApplyDataGraphic() 
    Dim vsoSelection As Visio.Selection 
    ActiveWindow.SelectAll 
    Set vsoSelection = ActiveWindow.Selection 
    Set vsoSelection.DataGraphic = ActiveDocument.Masters("MyCustomDataGraphic") 
End Sub

自訂資料圖形主圖形的行為

使用 Master.DataGraphicHiddenMaster.DataGraphicHidesText 屬性來自訂資料圖形主圖形行為的特定層面。

DataGraphicHidden 屬性決定資料圖形主圖形是否要顯示在 Visio UI 的 [資料圖形] 圖庫中。 當您將指定主圖形的此屬性值設為 True 時,主圖形不會出現在圖庫的資料圖形清單中。 這個屬性的預設值為 False

DataGraphicsHidesText 屬性決定套用資料圖形主圖形是否會隱藏所套用的圖形 (在群組圖形的情況下為主要圖形) 之文字。這個屬性的預設值也是 False

GraphicItem.UseDataGraphicPosition屬性會決定是否要針對圖形專案所屬之 GraphicItems集合的資料圖形主圖形專案,使用目前的預設圖說文字位置。 visTypeDataGraphic類型Master 物件之GraphicItems集合中圖形專案的預設圖說文字位置是由Master.DataGraphicVerticalPositionMaster.DataGraphicHorizontalPosition屬性的設定所指定。 如果 UseDataGraphicPositionTrue,則圖形項目的位置會根據預設設定。 如果 UseDataGraphicPositionFalse,則其位置取決於 Graphic Item.VerticalPositionGraphicItem.HorizontalPosition 屬性的設定。

此外,如果圖形項目的 HorizontalPositionVerticalPosition 屬性值都等於 DataGraphicHorizontalPositionDataGraphicVerticalPosition 屬性值,該圖形項目的 UseDataGraphicPosition 屬性值就會自動設定為 True

但是請注意,您可以使用資料圖形的控點,以手動方式調整已套用至圖形之資料圖形的位置。 以這種方式設定的位置會優先於屬性設定所指定的位置。

Master.DataGraphicShowBorder屬性會決定是否要在相對於套用資料圖形之圖形的預設位置中的圖形專案周圍顯示框線。 根據預設,框線為隱藏。

以程式組合資料圖形

下列範例顯示如何建立資料圖形主圖形、新增現有圖形項目到其中,然後修改圖形項目。 此範例使用 Masters.AddEx 方法新增資料圖形主圖形到目前文件的 Masters 集合。

接下來,它會使用 Master.Open 方法來取得要編輯之現有資料圖形主圖形的複本。 如需為何需要編輯主圖形複本而非主圖形本身的詳細資訊,請參閱 Open 方法。 接下來,它會使用 GraphicItems.AddCopy 方法,將現有圖形專案的複本新增至新主圖形的 GraphicItems 集合,並使用 GraphicItem.SetExpression 方法來修改圖形專案所代表的資料欄位。 它也會設定 GraphicItem.PositionHorizontal 屬性,以修改圖形專案相對於套用圖形的水準位置。

最後,它會將 Master.DataGraphicHidesText 屬性設為 True 以隱藏圖形的文字,並關閉主圖形的複本,將變更套用到此資料圖形主圖形套用的現有圖形。 然後您可以將新的資料圖形主圖形套用到其他圖形中。

Public Sub AddNewDataGraphicMaster() 
 
    Dim vsoMaster As Visio.Master 
    Dim vsoMasterCopy As Visio.Master 
    Dim vsoMaster_Old As Visio.Master 
    Dim vsoGraphicItem As GraphicItem 
    Dim vsoGraphicItem_Old As Visio.GraphicItem 
 
    Set vsoMaster = ActiveDocument.Masters.AddEx(visTypeDataGraphic) 
    Set vsoMasterCopy = vsoMaster.Open 
    Set vsoMaster_Old = ActiveDocument.Masters("old_master_name") 
    Set vsoGraphicItem_Old = vsoMaster_Old.GraphicItems(1) 
    Set vsoGraphicItem = vsoMasterCopy.GraphicItems.AddCopy(vsoGraphicItem_Old) 
 
    vsoGraphicItem.SetExpression visGraphicExpression, "new_data_field_name" 
    vsoGraphicItem.PositionHorizontal = visGraphicLeft 
    vsoMasterCopy.DataGraphicHidesText = True; 
    vsoMasterCopy.Close 
 
End Sub

上述程式碼範例假設您知道現有資料圖形主圖形的名稱,其中包含您想要新增至新主圖形的一或多個圖形專案,以及您想要新增至主圖形的一或多個圖形專案的識別碼。 您可以在 [資料圖形] 工作窗格中將滑鼠移至主圖形上方,以判斷現有 資料圖形 主圖形的名稱。 您也可以逐一查看目前檔中的 Masters 集合來判斷主要名稱和識別碼,如下列程式碼所示。

For intCounter = 1 To ActiveDocument.Masters.Count 
        If ActiveDocument.Masters(intCounter).Type = visTypeDataGraphic Then 
            Debug.Print ActiveDocument.Masters(intCounter).Name, ActiveDocument.Masters(intCounter).ID 
        End If 
    Next

同樣地,您可以逐一查看主圖形的 GraphicItems 集合,以判斷現有圖形專案的 IDTag 屬性值,如下列範例所示。 Tag 屬性是 Visio 沒有使用的字串。 根據預設,它是空的。 但是,您可以設定此值以便用程式識別個別圖形項目。

For intCounter = 1 To (vsoMaster_Old.GraphicItems.Count) 
        Debug.Print vsoMaster_Old.GraphicItems(intCounter).ID, oldMaster.GraphicItems(intCounter).Tag 
    Next

若要查看示範如何以程式設計方式自訂資料圖形的程式碼範例,請下載 Visio SDK 並參閱程式碼範例程式庫。

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應