我正面临一个特殊的问题。
我有一个文件夹拾取程序,如下所示:
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驱动器中?
1条答案
按热度按时间8ehkhllq1#
我猜文件夹选择器会更改当前目录(您可以使用
Debug.Print CurDir
进行验证),并且您的脚本以某种方式依赖于特定的路径。