Excel VSTO AddIn - 从选择中获取图表对象

时间:2016-04-28 20:59:03

标签: .net excel visual-studio charts vsto

如何在用于Excel的VSTO加载项中将用户的选择转换为图表对象(类似Excel.Chart)。

我一直试图使用类似的东西(在Excel中选择图表对象时):

Dim chart as Excel.Chart = CType(Globals.ThisAddIn.Application.Selection, Excel.Chart)

然而,这会引发InvalidCastException

我似乎无法找到有关如何允许用户选择图表然后在VSTO加载项中修改所选图表的任何文档。

1 个答案:

答案 0 :(得分:1)

您的代码需要确定Selection是否实际包含Chart对象,然后从中派生Chart。为了确定Selection包含什么,当使用VB.NET时,使用返回String的TypeName方法,然后计算字符串:

Public Function IsSelectionChart() as Boolean
    Dim cht As Excel.Chart
    Dim sSelectionType As String
    Dim xlApp As Excel.Application = Globals.ThisAddIn.Application

    sSelectionType = TypeName(xlApp.Selection)
    Select Case sSelectionType
        Case "ChartArea", "PlotArea", "Legend"
            cht = xlApp.Selection.Parent
            Debug.Print(cht.Name)
        Case "Series"
            cht = xlApp.Selection.Parent.Parent
            Debug.Print(cht.Name)
        Case "Axis" 'Parent is Worksheet
            Debug.Print("Can't determine the chart from an Axis")
        Case Else
            Debug.Print("Not a chart-related object")
    End Select

    If Not cht Is Nothing Then 
       Return True
    Else
       Return False
    End If
End Function