我正在尝试实现一个简单的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文件复制所有文件,但结果相同。可能是我要粘贴的工作表中的单元格格式化的方式吗?有趣的是,我已经在另一个工作簿中使用了此宏,并且使其工作正常。
如果有人知道我可以修复我的代码并使其正常运行,将不胜感激。
谢谢
结束子
答案 0 :(得分:2)
如果您只想复制值,则可以跳过复制/粘贴并直接从源范围中设置值:
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