Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 如果Err.Description="&引用;然后。。。。。在VBscript中_Excel_Vbscript_Qtp_Hp Uft - Fatal编程技术网

Excel 如果Err.Description="&引用;然后。。。。。在VBscript中

Excel 如果Err.Description="&引用;然后。。。。。在VBscript中,excel,vbscript,qtp,hp-uft,Excel,Vbscript,Qtp,Hp Uft,我正在通过以下方式修复以下错误“datatable importsheet操作失败。文件无效”: On error resume next DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2" If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Lin

我正在通过以下方式修复以下错误“datatable importsheet操作失败。文件无效”:

On error resume next

DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2" 

If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""."  Then

list of instructions

end if 
但我有一个错误:

由于语法错误,测试运行无法继续

Expected 'Then'

Line (24): "If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""."  Then".
一切看起来都很好。有什么需要帮忙的吗?我错在哪里

基本规则:

  • 双引号(“”)通过双引号(“”)进行转义
  • VBScript字符串文本中没有类似“\n”的转义(需要连接(或替换)
  • 连接运算符为&
  • 基本策略:简化、分割和征服:

    >> s = "1" & vbCrLf & "-""pi""-"
    >> t = "1" & vbCrLf & "-""pi""-"
    >> WScript.Echo s
    >> WScript.Echo t
    >> If s = t Then
    >>    WScript.Echo "no surprise"
    >> End If
    >>
    1
    -"pi"-
    1
    -"pi"-
    no surprise
    >>
    
    添加:

    应用于您的字符串/错误消息:

    's = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""."
     s = "1" & vbCrLf & "2: ""3(""4""),5(""6""),""7""."
     WScript.Echo s
    
    输出:

    cscript 39878005.vbs
    1
    2: "3("4"),5("6"),"7".
    
    基本规则:

  • 双引号(“”)通过双引号(“”)进行转义
  • VBScript字符串文本中没有类似“\n”的转义(需要连接(或替换)
  • 连接运算符为&
  • 基本策略:简化、分割和征服:

    >> s = "1" & vbCrLf & "-""pi""-"
    >> t = "1" & vbCrLf & "-""pi""-"
    >> WScript.Echo s
    >> WScript.Echo t
    >> If s = t Then
    >>    WScript.Echo "no surprise"
    >> End If
    >>
    1
    -"pi"-
    1
    -"pi"-
    no surprise
    >>
    
    添加:

    应用于您的字符串/错误消息:

    's = "The DataTable.ImportSheet operation failed. Invalid file." \n "Line (20): "DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2""."
     s = "1" & vbCrLf & "2: ""3(""4""),5(""6""),""7""."
     WScript.Echo s
    
    输出:

    cscript 39878005.vbs
    1
    2: "3("4"),5("6"),"7".
    

    尝试将错误描述行替换为以下内容

    If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." & vbCrLf & "Line (20): DataTable.ImportSheet Environment(" & STPFilePath & "),Environment(" & TestScriptName & ")," & Action2 & "." Then
    

    祝你好运

    尝试用以下内容替换错误描述行

    If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file." & vbCrLf & "Line (20): DataTable.ImportSheet Environment(" & STPFilePath & "),Environment(" & TestScriptName & ")," & Action2 & "." Then
    

    祝你好运

    我真的很纠结于你想做什么,而你的评论对我毫无帮助

    使用时

    On Error Resume Next
    
    当您在执行语句时遇到错误时,将发生以下情况:

  • 该语句将被跳过,脚本将移动到下一个语句并继续执行
  • 对象
    Err
    将填充导致跳过语句的错误的详细信息
  • 由几个描述所发生错误的关键属性组成

    • Number
      -引发的错误的错误代码
    • Source
      -引发错误的来源,可能是第三方库、VBScript运行时等
    • 说明
      -错误的自由文本说明
    如果您想检查错误

    DataTable.ImportSheet操作失败。无效文件

    什么时候

    执行时,您需要捕获对应于该特定错误的
    错误号
    代码

    像这样的东西

    On Error Resume Next
    
    DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2" 
    'Check that an error occurs
    If Err.Number <> 0 Then
      'Identify specific error and deal with accordingly.
      Select Case Err.Number
      Case 20012 'Code for DataTable.ImportSheet operation failed
        'List of instructions...
      Case Else
        'Unhandled error show to screen
        MsgBox "Error: " & Err.Number & " (" & Err.Source & ") - " & Err.Description
      End Select
      'Finished handling the error
      Call Err.Clear()
    End If
    
    出错时继续下一步
    DataTable.ImportSheet环境(“STPFilePath”)、环境(“TestScriptName”)、“Action2”
    '检查是否发生错误
    如果错误号为0,则
    '识别具体错误并进行相应处理。
    选择案例错误编号
    案例20012“DataTable.ImportSheet操作的代码失败
    '说明列表。。。
    其他情况
    '未处理的错误显示到屏幕
    MsgBox“Error:”&Err.Number&“(“&Err.Source&”)-“&Err.Description
    结束选择
    '已完成错误处理
    调用Err.Clear()
    如果结束
    

    我发现最令人困惑的是这个线程中的遗漏信息


    • “我需要的是说明而不是号码,问题是在我的情况下使用Err.Details而不是Err.description。现在,它正在工作。”

      Err
      对象不包含名为
      Details
      的属性,除非这是QTP特有的属性,但到目前为止,我还无法通过快速谷歌搜索找到任何内容。因此,我无法理解你如何说“它正在工作”


    我真的很纠结于你想做什么,而你的评论对我毫无帮助

    使用时

    On Error Resume Next
    
    当您在执行语句时遇到错误时,将发生以下情况:

  • 该语句将被跳过,脚本将移动到下一个语句并继续执行
  • 对象
    Err
    将填充导致跳过语句的错误的详细信息
  • 由几个描述所发生错误的关键属性组成

    • Number
      -引发的错误的错误代码
    • Source
      -引发错误的来源,可能是第三方库、VBScript运行时等
    • 说明
      -错误的自由文本说明
    如果您想检查错误

    DataTable.ImportSheet操作失败。无效文件

    什么时候

    执行时,您需要捕获对应于该特定错误的
    错误号
    代码

    像这样的东西

    On Error Resume Next
    
    DataTable.ImportSheet Environment("STPFilePath"),Environment("TestScriptName"),"Action2" 
    'Check that an error occurs
    If Err.Number <> 0 Then
      'Identify specific error and deal with accordingly.
      Select Case Err.Number
      Case 20012 'Code for DataTable.ImportSheet operation failed
        'List of instructions...
      Case Else
        'Unhandled error show to screen
        MsgBox "Error: " & Err.Number & " (" & Err.Source & ") - " & Err.Description
      End Select
      'Finished handling the error
      Call Err.Clear()
    End If
    
    出错时继续下一步
    DataTable.ImportSheet环境(“STPFilePath”)、环境(“TestScriptName”)、“Action2”
    '检查是否发生错误
    如果错误号为0,则
    '识别具体错误并进行相应处理。
    选择案例错误编号
    案例20012“DataTable.ImportSheet操作的代码失败
    '说明列表。。。
    其他情况
    '未处理的错误显示到屏幕
    MsgBox“Error:”&Err.Number&“(“&Err.Source&”)-“&Err.Description
    结束选择
    '已完成错误处理
    调用Err.Clear()
    如果结束
    

    我发现最令人困惑的是这个线程中的遗漏信息


    • “我需要的是说明而不是号码,问题是在我的情况下使用Err.Details而不是Err.description。现在,它正在工作。”

      Err
      对象不包含名为
      Details
      的属性,除非这是QTP特有的属性,但到目前为止,我还无法通过快速谷歌搜索找到任何内容。因此,我无法理解你如何说“它正在工作”


    由于if语句中的双引号未转义,因此出现语法错误

    我不确定您在这里试图做什么,可能使用Err.Number更有意义,但如果您想避免语法错误,请使用以下代码:

    If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file."" \n ""Line (20): ""DataTable.ImportSheet Environment(""STPFilePath""),Environment(""TestScriptName""),""Action2""." Then
        ''' list of instructions
    End If
    
    此外,如果要比较if语句中的两行,则不能使用\n。使用
    CHR(13)
    CHR(10)
    代替\n。即

    If Err.Description = "The DataTable.ImportSheet operation failed. Invalid file."& CHR(13) &"Line (20): ""DataTable.ImportSheet Environment(""STPFilePath""),Environment(""TestScriptName""),""Action2""." Then
    
    '''list of instructions
    
    End If
    
    再次说明:如果条件失败,则使用Err.Number会更有意义,因为上面的任何额外/缺少的空格/换行符都会使条件失败。