【发布时间】:2019-05-18 22:37:10
【问题描述】:
我想使用 Access VBA 移动网络上的文件夹。
当我点击表单上的按钮时,它将执行 VBA 代码。
当\\?\ 从代码中删除时,以下程序将移动本地 PC 文件夹。在任何网络文件夹路径之前使用\\?\,它正在网络上创建新文件夹。
当我想移动它给出的文件夹时:
运行时错误 5:无效的过程调用或参数。
在调试时,它会突出显示objF.MoveFolder oldStr, newStr
Private Sub btnBrowse_Click()
Dim oldStr As String
Dim newStr As String
Dim objF As Object
Me.OldPath = Me.FolderPath
Me.NewPath = GetFolder()
If Len(Me.NewPath) > 0 Then
Me.NewPath = "\\?\" & Me.NewPath
Me.FolderPath = Me.NewPath
Set objF = CreateObject("Scripting.FileSystemObject")
oldStr = Me.OldPath & "\*"
newStr = Me.NewPath & "\"
objF.MoveFolder oldStr, newStr
End If
End Sub
【问题讨论】:
-
来自帮助您在过程调用中传递了一个无效参数。这可能是因为参数超出范围或包含无效数据。或者,您可能在意外的时间调用了一个过程。更正此错误 验证传递给过程的参数是否有效。验证您是否在适当的时间调用该函数。。所以 msgbox 出路径。
-
对于本地路径,即 C:\blahblah blah 它运行良好。即移动文件夹。对于修改后的路径,即 \?\\G:\blahblahblah (实际网络路径为 G:\blahblahblah );该访问能够在网络路径中创建新文件夹。但是只有文件夹移动没有发生 \?\\G:blahblahblah
-
您不能使用这些路径。使用常规路径。
\\?\与网络有关。网络是\\servername\sharename\folder\file.ext -
实际上,仅在您的 cmets 之前,我删除了 \\?\ 并且一切正常。 \\?\ 在识别路径时给 MS Access 造成了混乱,因此引发了错误。感谢您的帮助@Noodles
-
与Access无关。它与“Scripting.FileSystemObject”有关。路径名限制为 260 个字符,因此程序仅分配其中的最大值来存储路径(520 个字节)。 NTFS 允许 32K 字符的路径。
\\?\告诉 Windows 程序知道路径可以达到 32K,并且 Windows 会关闭对合法 Windows 文件名的检查。