【问题标题】:Microsoft VBScript runtime errorMicrosoft VBScript 运行时错误
【发布时间】:2016-10-26 00:54:20
【问题描述】:

我已经用 VBScript 编写了我的代码。我的代码的特定部分出现错误,如下所示。

[ActiveX 脚本任务] 错误:用户脚本引发异常:错误代码:0
错误源 = Microsoft VBScript 运行时错误
错误描述:需要对象:'REGroupSBOOps'

第 85 行出错

'Declaring and connection string statements
strREGroupSBUOps ="sp_CPVarianceOpsReport6"
Set REGroupSBUOps = oDBCon.Execute(strREGroupSBUOps) 

Dim arr()
ReDim arr(6)

Dim i    
arr(0) = "REGroupSBUOps"
arr(1) = "DandBSBUOps"
arr(2) = "Tristate/Central/EastSBUOps"
arr(3) = "WestSBUOps"
arr(4) = "EastSBUOps"
arr(5) = "UKSBUOps"
If Not (arr(i).EOF) Then   ' <--error on this line
    'followed by other statements

【问题讨论】:

  • arr 是一个字符串数组。字符串没有属性EOFarr(i).EOF 到底应该做什么?你想用那个语句检查什么?
  • strREGroupSBUOps 分配有存储过程,REGroupSBUOps 是 sp 的结果集。在数组中获取结果集名称并检查条件。
  • 除非您使用我强烈反对Eval,否则字符串不会神奇地变成变量。此外,这对我来说就像一个X-Y Problem。为什么不能简单地使用变量?请说明您要解决的实际问题,而不是您认为的解决方案。
  • link 这是我的完整代码。我已经编写了存储过程,它们的记录存储在记录集中。我必须执行相同的语句集才能将每个记录集转换为单独的 Excel 工作簿。我将记录集名称放在一个数组中。从数组中获取值时发生错误。请帮忙

标签: vbscript


【解决方案1】:

For 循环中的代码连同存储过程的实际执行一起放入一个子程序中。将存储过程调用和数组中的名称作为参数传递给 sub。将所有出现的arr(i) 替换为获取存储过程调用返回的记录的变量的名称(在下面的示例中为rs)。

Sub ExportData(sp, name)
    Set rs = oDBCon.Execute(sp) 

    If Not rs.EOF Then
        sFileName1 = "\\CTSC00579895801\ime\MailReports\" & name & ".xls"
        Set oFSOExcelFile = CreateObject("Scripting.FileSystemObject")
        Set objExcel = CreateObject("Excel.Application")
        objExcel.Visible = True
        ...
        objExcel.Quit
        Set objExcel = Nothing
    End If
End Sub

ExportData "sp_CPVarianceOpsReport 1" "Tristate_Central_EastSBUOps"
ExportData "sp_CPVarianceOpsReport 2" "UKSBUOps"
...

作为进一步的优化,您可能希望将 Excel 和 FileSystemObject 对象创建为全局单例,并且只处理 sub 内的文件,而不是一遍又一遍地创建和销毁这些实例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多