运行 msoFileDialogFolderPicker 后无法运行 VBA Shell 脚本,否则可以工作

问题描述 投票:0回答:1

我面临一个特殊的问题。

我有一个文件夹选择器程序,如下所示:

Sub Select_Folder()
Dim SelectedFolder As String
    ' Open the select folder prompt
    With Application.FileDialog(msoFileDialogFolderPicker)
        If .Show = -1 Then ' if OK is pressed
            SelectedFolder = .SelectedItems(1)
        Else
            Exit Sub ' User canceled
        End If
    End With
Worksheets("RawData").Cells(15, 34) = SelectedFolder
End Sub

我有一个单独的过程来运行 Shell 命令。请注意,这两个过程不共享任何变量名称,Shell 函数也不对文件夹选取器子过程的输出有任何引用。

如果我运行 Shell 脚本而不运行文件夹选择器功能,则一切运行正常,该脚本是从命令提示符运行的。如果我先运行文件夹选择器功能,选择一个文件夹,然后尝试运行 Shell 功能,它会突然结束。只有在先运行Folder Picker子程序的特定情况下,Shell功能才不起作用。有什么建议可能导致此问题吗?

在这两种情况下,脚本是相同的,如果我尝试在 CMD 提示符下运行它,它运行得很好。

编辑:

  1. 当我说提示突然结束时,我的意思是cmd窗口在一秒钟内打开和关闭
  2. 脚本在调用时单独运行。此脚本运行命令提示符以从 IBM 服务器获取信息(命令为
    "cmd.exe /S /C " & "cd " & IBMInstallationPath & " && scm show history -r " & "https://jazz-test4.conti.de/ccm4/" & " -u " & UserName & " -P " & Password & " -C " & Component & " -w " & StreamName & " --remotePath " & Chr(34) & Folder & Chr(34))
    IBMPath = "C:\LegacyApp\IBM\EWM_Shell\3rd Party\scmtools\eclipse"
  3. 正如 Tim Williams 所建议的,当我将文件夹选择器脚本运行到 D 驱动器时,CurDir 发生了变化。在运行 Shell 脚本(ChDrive 和 CurDrive)以将当前目录更改为 C 驱动器之前,我已经添加了几行。现在可以正常使用了。

我仍然不确定为什么。也许是因为我的IBM安装路径也在C盘?

excel vba shell command-line-interface
1个回答
0
投票

我猜文件夹选择器会更改当前目录(您可以使用

Debug.Print CurDir
进行验证),并且您的脚本在某种程度上依赖于特定路径。

© www.soinside.com 2019 - 2024. All rights reserved.