【问题标题】:MS Access VBA FileSystemObject does not accept path with spaces in themMS Access VBA FileSystemObject 不接受包含空格的路径
【发布时间】:2011-10-19 18:36:19
【问题描述】:

如何解决 VBA 在使用 FileSystemObject 时不允许文件路径中有空格的限制?

这是我的代码:

from= "C:\Users\MyAccount\Desktop\a.txt"
to= "C:\Users\MyAccount\Desktop\Folder Name With Spaces\b.txt"
Dim fso As New FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CopyFile from, to

我已经尝试过在任何空格前添加“”的技巧,它不起作用。实际上弹出“错误的文件名或编号”错误。

我也尝试用 %20 替换任何空格,这也不起作用。

为了澄清,我事先不知道路径,它是由用户输入的。

【问题讨论】:

  • 文件名或路径中的空格没有限制,无论是在 VBA 中还是在使用 FSO 时。你一定有其他问题。例如,如果目标文件夹不存在,我认为 FSO 不会创建它。另外:如果您 Dim ... As New ...,则不需要使用 Createobject:您的对象是在 Dim 语句中创建的。
  • 是的,你明白了。原来我正在删除用户输入的最后一个字符 for \ 但忘记检查没有 \ 时的大小写。

标签: ms-access vba


【解决方案1】:

文件名或路径中的空格没有限制,无论是在 VBA 中还是在使用 FSO 时。你一定有其他问题。

例如,如果目标文件夹不存在,我认为 FSO 不会创建它。

另外:如果 Dim ... As New ...,则不需要使用 Createobject:您的对象是在 Dim 语句中创建的。

【讨论】:

    【解决方案2】:

    我对同一问题的解决方案:

    Dim folderPath As String
    folderPath = "D:\MyData\BackUp\capdat\City Name"
    If Len(Dir$((folderPath & "\OLDData" & Format(Date, "-ddmmyyyy") & ".accdb"))) > 0 Then
        Kill (folderPath & "\OLDData" & Format(Date, "-ddmmyyyy") & ".accdb"
    Else
        Do something
    End if
    

    【讨论】:

      【解决方案3】:

      自从我做任何 VBA 以来已经有一段时间了,但我认为您需要将字符串括在引号中以否定路径中的空格,这样可以吗:

      fso.CopyFile """" + from + """", """" + to+ """"
      

      编辑:

      This site 建议了这个套路:

      私有函数 GetQuotedArgument(ByVal argument As String) As String 常量引用为字符串 = """" Return String.Format("{0}{1}{0}", Quote, argument) 结束函数

      给予:

      fso.CopyFile GetQuotedArgument(from), GetQuotedArgument(to)
      

      如果你不得不求助于文件名的短格式......关于这样做的 Microsoft 文章 here,但不确定它是否适用于 VBA

      【讨论】:

      • GetQuotedArgument 不起作用,因为 VBA 中不存在 String.Format。
      • Tim Willian 明白了,原来我正在删除字符串的最后一个字符,但在末尾没有斜杠时忘记检查条件。
      猜你喜欢
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 2013-04-07
      • 1970-01-01
      • 1970-01-01
      • 2020-03-05
      相关资源
      最近更新 更多