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 を作成しました。ただ、XP環境で動かすと、WinXPMode部分と上位部分が並行して動いてしまい、プログラムの流れが止まってしまう(と思う)。

2 つの質問があります。

  1. 環境について心配する必要がないように、Windows 7 と XP の両方で動作するようにコードをアップグレードする方法はありますか。
  2. コードまたはシステムの何が問題なのかを確認する方法はありますか?

いくつかのファイル (10 個または 20 個のファイル名) に対して .jar を実行すると、問題なく実行されることがわかりました。その後、100個のファイル名のような多くのファイルを試しました。すると、Windows 7では表示されない、ファイルを出力できない(ファイルを書き込めない)というエラーが表示されました。

4

0 に答える 0