在运行msoFileDialogFolderPicker后无法运行Shell脚本,否则将工作

aurhwmvo  于 2023-10-23  发布在  Shell
关注(0)|答案(1)|浏览(168)

我正面临一个特殊的问题。
我有一个文件夹拾取程序,如下所示:

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函数,它会突然结束。只有在首先运行文件夹选取器子过程的特定情况下,Shell函数才不起作用。有什么建议可能导致这种情况吗?

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

编辑:
1.当我说提示符突然结束时,我的意思是cmd窗口在一秒钟内打开和关闭
1.脚本在调用时单独运行。此脚本运行命令提示符从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"
1.正如Tim威廉姆斯建议的那样,当我运行文件夹选择器脚本到D驱动器时,CurDir正在发生变化。在运行Shell脚本(ChDrive和CurDrive)将当前目录更改为C驱动器之前,我还添加了几行代码。它现在工作正常。
但我还是不知道为什么。也许是因为我的IBM安装路径也在C驱动器中?

8ehkhllq

8ehkhllq1#

我猜文件夹选择器会更改当前目录(您可以使用Debug.Print CurDir进行验证),并且您的脚本以某种方式依赖于特定的路径。

相关问题