我使用Visual Studio 2013与Excel 2013连接以生成图表。我尝试访问图表上的替代文本。如果图表在工作表上,我正在使用此脚本:
Excel.Application oXL;
Excel.Workbook oWB;
Excel.Worksheet oSheet;
oXL =(Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
oWB = (Excel.Workbook)oXL.ActiveWorkbook;
oSheet = (Excel.Worksheet)oWB.ActiveSheet;
oSheet.Shapes.Item(1).Title = "2016-02-17 A$16$";
直到图表在工作表上工作,问题是当图表是独立图表时,在这种情况下我使用此代码:
Excel.Application oXL;
Excel.Workbook oWB;
Excel.Chart cht;
oXL = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
oWB = (Excel.Workbook)oXL.ActiveWorkbook;
cht = (Excel.Chart)oWB.ActiveChart;
chart.Shapes.Item(1).Title = "2016-02-17 A$16$";
在这种情况下,当我尝试计数形状时,给我0,我不知道如何访问替代文本。
我也在VBA中检查了这个,但是在C#事件中如果我使用这段代码:
Excel.Application oXL;
Excel.Workbook oWB;
Excel.Worksheet oWS;
oXL = (Excel.Application)System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application");
oWB = (Excel.Workbook)oXL.ActiveWorkbook;
oWS = (Excel.Worksheet)oWB.Worksheets[1];
oWS.Shapes.Item(1).Title = "2016-02-17 A$16$";
oWS.Shapes.Item(1).AlternativeText= "2016-02-17 A$16$";
如果图表是独立的图表工作表,则形状的计数仍为0.
答案 0 :(得分:0)
在Excel中,您可以将Alt文本指定给嵌入在工作表或图表工作表中的形状。嵌入在工作表中的图表实际上包含在一个形状(称为ChartObject的特殊形状)中。当你使用
ActiveWorkbook.Shapes.Items(1)
您正在引用工作表中嵌入的形状,在您的情况下,该形状也是包含图表的ChartObject。您正在将Alt文本分配给此ChartObject,即图表的容器,而不是图表本身。
好的,这对你有用。
自己工作表上的图表未嵌入到形状中。它既是图表又是工作表(不是工作表,也是工作表,而是图表工作表)。没有形状可以将Alt文本分配给。
您可以在Excel用户界面中将Alt文本指定给图表工作表,如果将图表的位置从图表工作表更改为嵌入在另一工作表中的对象,Excel将记住Atl文本。
但图表工作表的Alt文本的OM看起来很破碎。如果我在将Alt文本分配给嵌入图表(ChartObject名称为“Chart 1”)时记录Excel VBA宏,则代码为:
ActiveSheet.Shapes("Chart 1").Title = "Embedded Chart Alt Text"
ActiveSheet.Shapes("Chart 1").AlternativeText = "Embedded Chart Description"
如果我在将Alt文本分配给图表工作表(工作表名称“Chart1”)的同时录制Excel VBA宏,我会得到几乎相同的代码:
ActiveSheet.Shapes("Chart 1").Title = "Chart Sheet Alt Text"
ActiveSheet.Shapes("Chart 1").AlternativeText = "Chart Sheet Description"
保存Alt文本和说明,因为我使用Excel UI分配它们,但代码没有意义。活动表是图表,它不包含任何形状,尤其是不包含名为“图表1”的形状。我不知道“图表1”的来源,因为在我将图表移到自己的图表表之前,图表是“图表2”。
这是一个错误。我可以看到Excel对象模型中没有挂钩到图表工作表的Alt文本(事实上,它实际上只对嵌入的形状有意义,因为它用于嵌入在网页中的图像)。将Alt文本分配给图表工作表时记录的代码没有任何意义,播放它会导致错误,因为找不到“图表1”。
我会报告错误,但你应该回到使用嵌入式图表。