【问题标题】:CopyPaste in VBA在 VBA 中复制粘贴
【发布时间】:2017-06-11 20:50:20
【问题描述】:

我对 VBA 很陌生。我尝试使用以下代码将工作表复制粘贴到另一个工作表:

 Sub CopyPaste

 Dim Source As String
 Dim Destination As String

 Set Source ="\\D:\folder\source.xls"
 Set Destination="\\D:\folder\destination.xls"
 FileCopy Source, Destination
 End Sub

我主要使用中提供的代码: VBA to copy a file from one directory to another

但是它给出了对象必需的错误。我被困在这一点上。

非常感谢

【问题讨论】:

  • 您在 c: 和桌面之间缺少反斜杠。另外,你的桌面文件夹在你的C盘根目录下吗?
  • 我瞬间就编好了。抱歉给您带来不便,我更改了它们@Aiden Grossman
  • @JonsiBillups 您是否实例化了 fso,就像在链接的帖子中一样?显示您的 FileCopy 代码并指定您在哪一行得到错误。
  • @Absinthe 我在设置 Source = "path" 的行中收到错误,这给了我一个需要弹出的对象。其他方法没有给出任何错误,但我在目标 excel 中看到一张空白表

标签: vba


【解决方案1】:

Set 仅用于为对象类型变量赋值。

Sub CopyPaste

 Dim Source As String
 Dim Destination As String

 Source ="\\D:\folder\source.xls"
 Destination="\\D:\folder\destination.xls"
 FileCopy Source, Destination
End Sub

不过,路径之前的那两个反斜杠看起来很奇怪。

【讨论】:

    【解决方案2】:

    如果您要保存到网络路径,则将使用两个反斜杠,例如

    "\\servername\sharename\filename.xls"
    

    您的代码的正确语法应该是:

    Sub CopyPaste
        Dim Src As String
        Dim Dst As String 
    
        Src ="D:\folder\source.xls" 
        Dst="D:\folder\destination.xls" 
    
        FileCopy Src, Dst
    End Sub
    

    正如 A.S.H 所说,记住不要将 Set 与字符串变量一起使用。

    FileCopy 过去曾给我带来过问题,所以如果您遇到问题,您可以尝试以下代码作为替代方案:

    Sub CopyPaste
        Dim fs As Object
        Dim Src As String 
        Dim Dst As String
    
        Src = "D:\folder\source.xls"
        Dst = "D:\folder\destination.xls"
    
        Set fs = CreateObject("Scripting.FileSystemObject")
        fs.CopyFile Src, Dst
        Set fs = Nothing
    End Sub
    

    【讨论】:

    • 当我删除 Src 和 Dst 的 Dim Section 时,此功能有效
    • 不要将Set 与字符串一起使用。
    • @A.S.H 感谢您的澄清,对不起,我昨晚没有想清楚,因为我没有带电脑,所以我正在记忆中。
    • 这就解释了:) 顺便说一句,反对票不是我的。 ..它现在应该被收回。