【问题标题】:VBScript for Excel: How do I choose the source data (.SetSourceData)?VBScript for Excel:如何选择源数据 (.SetSourceData)?
【发布时间】:2013-07-15 08:51:31
【问题描述】:

我已在 Google 和此处搜索此问题的答案,但均未成功。如果之前有人问过,那我道歉。

我正在尝试使用 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。

干杯。

【问题讨论】:

    标签: excel vbscript import charts plot


    【解决方案1】:

    正如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
    

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

    【讨论】:

    • 非常感谢!我现在可以无错误地运行代码。但是文件中没有创建图表(在我保存并在 Excel 中打开它之后)。它似乎在代码执行时创建了一些东西,但是当我之后打开文件时,它只是一个空的图表区域。我有两列(B 和 C)中的数据,我想创建一个简单的折线图,其中 B 值为 x,C 值为 y。我将 .ChartType 更改为 xlLine。我需要以任何方式单独保存绘图/图表吗?
    • 您的代码正在打开一个文本文件。检查数据是否以您期望的方式实际导入。
    • 我发现我搞砸了常量,它是 Const xlColumns = 2
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    相关资源
    最近更新 更多