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
相关产品推荐
相关产品推荐

