以下不是我的代码。我经常在文本中绊倒错误代码。有人告诉我以下代码来实现代码:
您必须设置对Windows Script Host Object Model
的引用。 sDrive
和sBasePath
用于设置起始文件夹名称。 sFileList
是将结果写入文本文件的位置。
我已将Windows Script Host Object Model
设置为被引用,但如果不跳过内置错误,我仍然无法成功运行它。请帮忙
Public sDrive As String
Public sBasePath As String
Public Const sFileList As String = "U:\"
Option Explicit
Sub GetDirTree()
Dim WSH As WshShell
Dim lErrCode As Long
Set WSH = New WshShell
lErrCode = WSH.Run("cmd.exe /c dir """ & sDrive & sBasePath & """/B /S >" & sFileList, 0, True)
If lErrCode <> 0 Then
MsgBox ("Error in GetDirTree: Error Number: " & CStr(lErrCode))
Stop
End If
End Sub
代码记入:Ron Rosenfeld
答案 0 :(得分:2)
以下代码要求通过VBE的工具►参考命令将 Windows脚本宿主对象模型添加到项目中。
你错过了一些变量的分配;例如声明时它们是vbnullstrings,而不是赋值。
Option Explicit
Public sDrive As String
Public sBasePath As String
Public sFileList As String
Sub GetDirTree()
Dim WSH As WshShell
Dim lErrCode As Long
sDrive = "c:\"
sBasePath = "New Folder\*"
sFileList = Environ("TEMP") & Chr(92) & "My_Dir_List.txt"
Debug.Print "cmd.exe /c dir """ & sDrive & sBasePath & """/B /S >" & sFileList
Set WSH = New WshShell
lErrCode = WSH.Run("cmd.exe /c dir """ & sDrive & sBasePath & """/B /S >" & sFileList, 0, True)
If lErrCode <> 0 Then
MsgBox ("Error in GetDirTree: Error Number: " & CStr(lErrCode))
Stop
End If
End Sub
我已将sFileList
的声明更改为公开但不是常量。您无法即时更改 const ant变量。 sFileList
将被放入TEMP环境变量指定的文件夹中。这很方便,因为应该没有写入权限错误。我已将用于VBE的立即窗口的命令发送给调试目的。