如何在用于Excel的VSTO加载项中将用户的选择转换为图表对象(类似Excel.Chart
)。
我一直试图使用类似的东西(在Excel中选择图表对象时):
Dim chart as Excel.Chart = CType(Globals.ThisAddIn.Application.Selection, Excel.Chart)
然而,这会引发InvalidCastException
。
我似乎无法找到有关如何允许用户选择图表然后在VSTO加载项中修改所选图表的任何文档。
答案 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