【问题标题】:Move folders in network location using Access VBA使用 Access VBA 在网络位置移动文件夹
【发布时间】: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 文件名的检查。

标签: vba ms-access


【解决方案1】:

使用 Microsoft.Scripting.Runtime 文件对象移动文件夹。

【讨论】:

  • 您能否建议我的“Set objF”如何定义为...?
  • 将 objF 作为新的 Scripting.FileSystemObject 设置 f = objF.GetFile(PATH_TO_COPY) f.Copy PATH_TO_MOVE
【解决方案2】:

我们不能使用这些\\?\ 路径。应该使用常规路径。 \\?\ 与网络有关。网络是\\servername\sharename\folder\file.ext

我删除了\\?\,它运行良好。 \\?\ 在识别路径时给 MS Access 造成了混乱,因此引发了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多