1

我编写的这个 VBA 代码在 Windows 7 中运行,但在 XP 中不运行。

Public Function WShellRun(command As String)

    Dim wShell As Object
    Dim waitOnReturn As Boolean: waitOnReturn = True
    Dim windowStyle As Integer: windowStyle = 0

    Dim errorCode As Integer

    Dim wExec, rslt As String

    Set wShell = CreateObject("Wscript.Shell")

    wShell.CurrentDirectory = ActiveWorkbook.Path

    On Error GoTo WinXpMode

    errorCode = wShell.Run(command, windowStyle, waitOnReturn)

    If errorCode <> 0 Then
        MsgBox "SHELL COULDN`T STARTED " & errorCode, vbCritical, "SHELL ERROR"
        Exit Function
    End If

    Set wShell = Nothing

    Exit Function

WinXpMode:

    Set wExec = wShell.Exec("%ComSpec% /c " & command)    ''(1) execute DOS

    Do While wExec.Status = 0                       ''(2) wait until response
        DoEvents
    Loop

    'rslt = wExec.StdOut.ReadAll                   ''(3) show result

    'MsgBox rslt

    Set wExec = Nothing
    Set wShell = Nothing

End Function

我认为 WSH 不能在 XP 上运行,所以我编写了一个 GOTO,当脚本发生某些事情时,代码会流向该 GOTO。但是当我在XP环境中运行它时,WinXPMode部分和上部并行运行,它冻结了程序的流程(我认为)。

我有两个问题。

  1. 有什么方法可以升级代码以在 Windows 7 和 XP 中工作,所以我不必担心环境。
  2. 有没有办法检查代码或系统有什么问题?

我发现当我为几个文件(10 或 20 个文件名)运行 .jar 时,它没有任何问题。之后,我尝试了许多文件,例如 100 个文件名。然后它向我显示了一个错误,它无法输出文件(无法写入文件),这在 Windows 7 中没有出现。

4

0 回答 0