2013-06-11 21 views
0

粗略地說,我想創建Excel圖表子類以下功能添加到子文件:嵌入按鈕到Excel圖表

  1. 添加一個按鈕,圖表的視覺外觀(中按鈕應該具有相對於圖表的固定位置 - 所以如果我移動圖表,該按鈕也會移動)。實際上,它不一定是按鈕 - 它可能是其他任何允許點擊它(或執行任何其他操作)並在點擊之後執行一些活動的其他任何東西。
  2. 向圖表添加一些附加屬性(這些屬性並不會隨意顯示,但會影響時間序列的表示形式)。也許有一種標準的方法來自定義Excel圖表屬性的集合?

我不知道到什麼程度是可能的。也許「小孩班」並不是滿足這種簡單需求的好主意。也許VSTO有一些東西,但我在互聯網上找不到合適的東西。

任何幫助將非常感謝!

PS

對於subquestion#2我已經決定使用該領域TAG放在那裏的對象與其他參數。

回答

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#中爲它創建包裝類。

+0

我知道可以在Win32 API調用的幫助下對Excel對象進行子類化處理,但是我發現很多人在嘗試這樣做時遇到了問題:只是擡起頭來! –

+0

安德魯,非常感謝 - 這真的有助於問題的第一部分!希望將其轉換爲C#。 – iCoffee

+0

也許Chart的對象模型具有「對象」類型的屬性,我可以將外部創建的對象與我想要放入子類的所有附屬信息放在一起?我的意思是一個沒有使用或很少使用的屬性。 – iCoffee