将按钮嵌入到Excel图表中

时间:2013-06-11 22:28:24

标签: c# excel charts vsto

粗略地说,我想从Excel Chart创建一个子类,将以下功能添加到子项中:

  1. 在图表的视觉外观上添加一个按钮(按钮应该具有相对于图表的固定位置 - 所以如果我移动图表,按钮也会移动)。实际上,它不一定是完全按钮 - 它可能是允许点击它(或做任何其他动作)并在点击后进行一些活动的任何其他内容。
  2. 向图表添加一些其他属性(这些属性不会出现,但它们会影响时间序列的表示)。也许有一种标准的方法来自定义Excel Chart的属性集?
  3. 我不知道可能的程度。也许“儿童班”并不是满足这种简单需求的好主意。也许VSTO有一些东西,但我在互联网上找不到合适的东西。

    非常感谢任何帮助!

    PS

    对于子问题#2,我决定使用字段TAG将一个带有附加参数的对象放在那里。

1 个答案:

答案 0 :(得分:2)

在回答您的第一个问题时,可以在图表中嵌入表单控件按钮或形状,并通过将其剪切并粘贴到图表上使其保持相对于图表区域的位置。使用OnAction属性为按钮指定过程。

录制的代码(在Excel中)是这样的:

Sub Macro1()
    ActiveSheet.Buttons.Add(166.5, 48, 48, 32.25).Select
    Selection.OnAction = ActiveWorkbook.Name & "!TestMacro"
    Selection.Cut
    ActiveSheet.ChartObjects("Chart 1").Activate
    ActiveChart.Paste
    Selection.ShapeRange.IncrementLeft 10
    Selection.ShapeRange.IncrementTop 30
End Sub

也许可以通过添加到ChartObject的ShapeRange来编程而不切割和粘贴,但我还没有探索过这个。

我不知道你可以在多大程度上直接子类化Excel图表(如果有的话),并怀疑你可能只是在C#中为它创建一个包装类。