You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA跨工作簿复制粘贴纯文本报错:Compile Error问题求助

解决VBA跨工作簿仅粘贴纯文本的编译错误问题

错误原因

你尝试添加.PasteSpecial Paste:=xlPasteValues时出现编译错误,是因为原代码用了Copy直接接续目标单元格的快捷语法——这种写法无法和PasteSpecial结合使用,PasteSpecial需要单独调用,不能和Copy的目标参数连写。

解决方案1:使用PasteSpecial正确语法

把复制和粘贴操作拆分,先执行Copy,再对目标单元格调用PasteSpecial:

Sub get_data()
 
Dim Wb1 As Workbook
 
'Dont update screen, works faster.
Application.ScreenUpdating = False
 
'Open Workbook. Input FULL path inside quotation marks, including extension of the file.
Set Wb1 = Workbooks.Open("wocnewoi.xlsm")
 
'Data gets filled with the following code:
 
'Information
Wb1.Worksheets("Info").Range("G14").Copy
ThisWorkbook.Worksheets("Information").Range("C6").PasteSpecial Paste:=xlPasteValues
    
Wb1.Worksheets("Info").Range("G16").Copy
ThisWorkbook.Worksheets("Information").Range("C8").PasteSpecial Paste:=xlPasteValues

' 清除剪贴板内容(可选,避免后续误粘贴)
Application.CutCopyMode = False

Wb1.Close SaveChanges:=False
    
Application.ScreenUpdating = True

End Sub

解决方案2:直接赋值(更高效)

如果不需要复制操作的额外特性,直接将源单元格的值赋值给目标单元格即可——这种方式比复制粘贴更快,还不会占用剪贴板:

Sub get_data()
 
Dim Wb1 As Workbook
 
'Dont update screen, works faster.
Application.ScreenUpdating = False
 
'Open Workbook. Input FULL path inside quotation marks, including extension of the file.
Set Wb1 = Workbooks.Open("wocnewoi.xlsm")
 
'Data gets filled with the following code:
 
'Information
ThisWorkbook.Worksheets("Information").Range("C6").Value = Wb1.Worksheets("Info").Range("G14").Value
ThisWorkbook.Worksheets("Information").Range("C8").Value = Wb1.Worksheets("Info").Range("G16").Value

Wb1.Close SaveChanges:=False
    
Application.ScreenUpdating = True

End Sub

补充说明

  • 方案1保留了复制粘贴流程,适合需要灵活选择粘贴选项的场景;
  • 方案2是纯值传递的最优写法,代码更简洁、执行效率更高。

内容的提问来源于stack exchange,提问作者Luis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 04:06:08