excel - 使用 Excel-VBA 宏从工作簿复制时出现运行时错误“1004”
问题描述
我正在尝试实现一个简单的 Excel-VBA 宏,让用户在文件资源管理器中浏览另一个工作簿,然后将该工作簿中的某些单元格复制到我的活动工作簿中。这是我的短代码:
Sub Load_AutoCADBOM()
Dim wbk As Workbook
Dim MyFile As String
MyFile = Application.GetOpenFilename()
If MyFile <> "False" Then
Set wbk = Workbooks.Open(MyFile)
With wbk.Sheets(1)
Range("B2:C43").Copy
End With
ActiveWorkbook.Close
With ThisWorkbook.Worksheets("Config")
Range("A6:B47").PasteSpecial Paste:=xlPasteValues
End With
End If
End Sub
该宏旨在从所选工作簿中的 (B2:C43) 复制单元格,并将它们复制到我当前工作簿的工作表“配置”上的单元格 (A6:B47) 中。当我运行宏时,我得到“运行时错误'1004': Range 类的 PasteSpecial 方法失败。” 调试器突出显示该行:
Range("A6:B47").PasteSpecial Paste:=xlPasteValues
我尝试从 csv、xls 和 xlsm 文件中复制所有文件,结果都相同。这可能是我的单元格在我粘贴到的工作表中的格式吗?有趣的是,我在另一个工作簿中使用了这个宏并且它工作没有问题。
如果有人知道我可以修复我的代码并使其正常工作的任何方式,将不胜感激。
谢谢
结束子
解决方案
如果您只想复制值,则可以跳过复制/粘贴并直接从源范围设置值:
Sub Load_AutoCADBOM()
Dim wbk As Workbook
Dim MyFile As String
MyFile = Application.GetOpenFilename()
If MyFile <> "False" Then
Set wbk = Workbooks.Open(MyFile)
With wbk.Sheets(1).Range("B2:C43")
ThisWorkbook.Worksheets("Config").Range("A6").Resize(.rows.count, .columns.count).value = .Value
End With
wbk.Close
End If
End Sub
推荐阅读
- azure - Azure 应用程序配置跟踪请求 IP 地址?
- r - 获取绘图区域ggplot2的笛卡尔坐标
- python - 我的最后两个 elif/else 语句不会执行,我不知道为什么?
- java - 处理声音比原来慢
- reactjs - 如何在反应打字稿中选择/取消选择复选框?
- angular - 根据 FormGroup 中的另一个字段值切换选择菜单选项
- c - 如何在更新 GTK UI 的 GTask 结束时避免竞争条件?
- caching - Redis HSET 键在几分钟后过期
- javascript - 一旦 promise 数组中的每个 promise 被履行,就返回数据 - Typescript/Javascript
- jquery - 没有值的单选按钮标签的活动状态