VBScript for Excel:如何选择源数据(.SetSourceData)?

时间:2013-07-15 08:51:31

标签: excel vbscript import charts plot

我在谷歌和这里都搜索过这个问题的答案,没有任何成功。如果之前有人问过,那么我道歉了。

我正在尝试使用VBScript自动执行某些管理任务。此特定脚本的目的是从文本文件(带有文本和数字列)中获取一些使用情况统计信息,并从数据中创建折线图。创建一个excel文件并加载数据工作正常,但我在创建图表时遇到问题:我不明白如何选择源数据,并且我一直遇到语法错误。有关如何在VBA中执行此操作的互联网上有大量信息,从录制的宏中可以看出这一点。但我无法用VBScript做到这一点。这是我的代码(由于隐私原因,一些文件名等已被更改):

Set objFSO = CreateObject("Scripting.FileSystemObject")

' Create an instance of Excel (keep program hidden) and open text data file
Set objExcel = CreateObject("Excel.Application")

With objExcel
.Visible = False
.WorkBooks.OpenText("Datafile.txt")
End With

' Name the current worksheet
Set objWorksheet = objExcel.Worksheets(1)


' Name constants for use in chart creation
xlLine = 4
xlPrimary = 1
xlCategory = 1
xlValue = 2
xlColumns = 3


' Define chart properties
Set objChart = objExcel.Charts.Add()
With objExcel.ActiveChart
    .ChartType = 1
    .HasTitle = True
    .ChartTitle.Characters.Text = "usage"
    .Axes(xlCategory, xlPrimary).HasTitle = True
    .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Time"
    .Axes(xlValue, xlPrimary).HasTitle = True
    .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "units"
    .ChartType = xlLine
    .HasLegend = False
    .SetSourceData Source:="objWorksheet".Range("B2:B10"), Plotby:=xlColumns

End With

使用此代码,我设法创建一个excel文件,其中数据正确排列在列中,另一张表中包含空图表(具有上述属性)。

但是“.SetSourceData”行给了我错误。我只是不确定如何在VBScript中使用它。我对VBScript很新,所以请原谅语法错误或理解代码。也许我在做一些根本错误的事情?

修改

我正在使用Excel 2003。

干杯。

1 个答案:

答案 0 :(得分:2)

info section标记中所述,您无法在VBScript中使用命名参数。此外,您将变量名称objWorksheet放在双引号中。这将使它成为文字字符串“objWorksheet”而不是保存工作表对象的变量。改变行

.SetSourceData Source:="objWorksheet".Range("B2:B10"), Plotby:=xlColumns

到此:

.SetSourceData objWorksheet.Range("B2:B10"), xlColumns

更一般地说,您应该使用Const关键字来定义常量:

Const xlLine     = 4
Const xlPrimary  = 1
Const xlCategory = 1
Const xlValue    = 2
Const xlColumns  = 3

否则它们将成为常规(可变)变量。