【问题标题】:Invalid procedure call or argument error in macro宏中的无效过程调用或参数错误
【发布时间】:2021-06-19 14:30:04
【问题描述】:

我创建了我喜欢在 vba Excel 中运行的 .bat 文件,我有一个代码(code1)来运行 .bat 文件。单独运行时它工作正常,但如果使用目标代码(我在下面的代码2中给出)运行它会引发错误。

 sub batfile() '-->code1
 Dim a As Integer
 ChDir ("C:\Users\tshiv\source")
 a = Shell("test.bat", vbNormalFocus)
 end sub

 sub creatbatfile()
 Dim FSO As Object
 Set FSO = CreateObject("Scripting.FileSystemObject")
 Dim TextFile As Object
 Dim strtext As String
 strtext = "C:\Users\tshiv\source\test.bat"
 Set TextFile = FSO.CreateTextFile("C:\Users\tshiv\source\test.bat")
 TextFile.Write "netsh wlan show profile | clip"
 Dim a As Integer
 ChDir ("C:\Users\tshiv\source")
 a = Shell("test.bat", vbNormalFocus) --> shows Invalid procedure call or argument error
 end sub

请核实

【问题讨论】:

    标签: vba


    【解决方案1】:

    我们可以使用基于 EXCEPT 和 INTERSECT 的度量。首先,我们需要知道当前行中的年份是什么。我们创建一个变量,然后为今年和上一年创建一个带有 SupplierID 的虚拟表变量。接下来,我们可以比较两者。

    SubInCurrAndPrevYear = 
    var __currYear = YEAR(SELECTEDVALUE(Sheet1[Date      ]))
    var __PrevYear = __currYear -1
    var __SupPREV = CALCULATETABLE(VALUES(Sheet1[ SupplierID ]), year(Sheet1[Date      ]) = __PrevYear)
    var __SupCurr = CALCULATETABLE(VALUES(Sheet1[ SupplierID ]), year(Sheet1[Date      ]) = __currYear)
    
    return
        COUNTROWS(INTERSECT(__SupCurr,__SupPREV))
    
    
    SubLostThisYear = 
    var __currYear = YEAR(SELECTEDVALUE(Sheet1[Date      ]))
    var __PrevYear = __currYear -1
    var __SupPREV = CALCULATETABLE(VALUES(Sheet1[ SupplierID ]), year(Sheet1[Date      ]) = __PrevYear)
    var __SupCurr = CALCULATETABLE(VALUES(Sheet1[ SupplierID ]), year(Sheet1[Date      ]) = __currYear)
    
    return
        COUNTROWS(EXCEPT(__SupPREV, __SupCurr))
    
    SubNewThisYear = 
    var __currYear = YEAR(SELECTEDVALUE(Sheet1[Date      ]))
    var __PrevYear = __currYear -1
    var __SupPREV = CALCULATETABLE(VALUES(Sheet1[ SupplierID ]), year(Sheet1[Date      ]) = __PrevYear)
    var __SupCurr = CALCULATETABLE(VALUES(Sheet1[ SupplierID ]), year(Sheet1[Date      ]) = __currYear)
    
    return
        COUNTROWS(EXCEPT(__SupCurr,__SupPREV))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-11
      • 2017-04-07
      • 2018-07-25
      相关资源
      最近更新 更多