我使用Delphi Seattle在Excel(2013)中構建和顯示圖表。我從數據透視表建立我的圖表。圖表顯示一切正常。它有一個默認標題,所以我想改變它。這應該是一個簡單的屬性更改,但我不斷收到AV錯誤。當我谷歌,我可以找到最接近的事情提到,我需要選擇圖表和/或圖表標題之前,我改變它。 [已更新]以下是顯示問題的工作示例。Delphi - 在Excel中更改圖表標題導致AV - 更新完整樣本
procedure TForm1.Button1Click(Sender: TObject);
var
oExcel : ExcelApplication;
RawDataSheet :_Worksheet;
myChart: Shape;
begin
oExcel := CreateOleObject('Excel.Application') as ExcelApplication;
oExcel.Visible[LOCALE_USER_DEFAULT] := True;
// Add a New Workbook, with a single sheet
oExcel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT);
// Get the handle to the active Sheet, and insert some dummy data
RawDataSheet := oExcel.ActiveSheet as _Worksheet;
RawDataSheet.Range['A1', 'B10'].value2 := 10;
// Now add my chart
myChart := RawDataSheet.Shapes.AddChart2(208, xlColumnClustered, 200, 10, 300, 300, True);
// Try to access the Chart Title... This always AVs here.
myChart.Chart.HasTitle[LOCALE_USER_DEFAULT] := True;
// Set Title Text. If Comemnt out above line, this AVs as well
myChart.Chart.ChartTitle[LOCALE_USER_DEFAULT].Caption := 'New Chart Title';
end;
我找不到任何方法來更改我的標題。我什至不能找到任何方式來閱讀現有的標題,更不用說改變它。
爲ChartTitle微軟對象模型文檔說,這是正確的屬性...(https://msdn.microsoft.com/en-us/library/office/ff840521.aspx)
附加信息:我並生成自己的類型庫,Excel_TLB,和我有我的uses子句。我的完整使用條款是...
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, ComObj, Excel_TLB;
我不知道你爲什麼要使用的,而不是一個句柄,你要訪問的圖表ActiveChart,但顯然你做......你的代碼,是用Excel2013 ...謝謝你。這一直讓我瘋狂。 – user1009073
@user - 可能你不需要。但由於它不能按預期工作(與類型庫和文檔不匹配),所以任何人都會猜測你應該怎麼做。我用一個*奇怪的工作解決方案更新了答案,而不使用ActiveChart。 –