将Excel ChartTitle添加到Excel可在VBA中使用,但不能从VBScript中使用

我试图写一个VBScript文件(xxx.vbs),可以打开.CSV文件,格式化和图表数据。 一切工作正常,除了一件事 – ActiveChart.ChartTitle的设置。 当我在VBA中创build它时,它工作的很好,但是当我从VBScript文件中完成时,它似乎忽略了它。

这里是我的xxx.vbs文件的要领的消毒版本:

' Using Excel 2013 Const xlBarClustered = 57, xlLocationAsNewSheet = 1 ' Assume for this exercise Excel is already open and on the correct sheet Set oExcel = GetObject(, "Excel.Application") Set SheetData = oExcel.ActiveSheet ' Assume Labels in A2:A21, Data in B2:B21 and Title in B1 oExcel.Range("A2:B21").Select SheetData.Shapes.AddChart2(216, xlBarClustered).Select Set aChart = oExcel.ActiveChart With aChart .Location xlLocationAsNewSheet, "TestChart" .ChartType = xlBarClustered .SetSourceData oExcel.Range(SheetData.Name & "!A2:B21") .HasTitle = True With .ChartTitle ' I've tried each of these in turn and none set anything .Text = "=" & SheetData.Name & "!B1" .Formula = SheetData.Name & "!B1" .Caption = "=" & SheetData.Name & "!B1" End With End With 

我在Excel中创build了一个没有标题的图表,然后运行这个代码,它对我有效(Excel 2010)。

 Const msoElementChartTitleAboveChart = 2 With GetObject(, "Excel.Application") .ActiveChart.SetElement msoElementChartTitleAboveChart .ActiveChart.ChartTitle.Text = "Test Title" End With 

我已经解决了我自己的问题! 我开始怀疑“不起作用”的代码是不是附在正确的对象上。 事实certificate,.Location命令改变了ActiveChart对象。 通过重新select图performance在工作正常(除了一些额外的常量之外,其余代码如上):

  SheetData.Shapes.AddChart2(216, xlBarClustered).Select oExcel.ActiveChart.Location xlLocationAsNewSheet, "TestChart" Set aChart = oExcel.Charts(1) With aChart .HasTitle = True .ChartTitle.Formula = "=" & SheetData.Name & "!B1" With .Axes(xlValue) .MajorUnit = 1 .MinorUnit = 1 .HasTitle = True .AxisTitle.Caption = "Test" End With .Axes(xlCategory).ReversePlotOrder = True .Axes(xlCategory).Crosses = xlMaximum End With 

我希望这可能对其他人有用!