我编写了一些托管在 Access 2010 中的 VBA 代码来清理包含不需要的 AutoRun 宏的 Excel 4.0 工作簿 - 因为我只对数据感兴趣,所以将特定工作表复制到新的 Excel 2010 工作簿似乎是个好主意.
但是,当 VBA 进入.Copy
语句时,我收到错误:
1004 对象“_Worksheet”的方法“复制”失败。
这不是具有多个副本的 MS 错误,或者在复制之前未保存等。这是试图复制到现有工作簿中。虽然此错误代码在这里似乎很流行,但我找不到适合我的方法和/或答案。
代码有问题的部分:
'declarations
Dim varFile As Variant
Dim varNewFile As Variant
Dim xlApp As Excel.Application
Dim xlWbk As Excel.Workbook
Dim xlWb2 As Excel.Workbook
Dim xlSht As Excel.Worksheet
Dim xlSh2 As Object 'will be a member of the Sheets collection (not worksheets)
'filenames - constPath is a constant defining the pathname to the folder
varFile = constPath & "\site.xls"
varNewFile = constPath & "\sitenew.xlsx"
'create instance of Excel, open source workbook and point to worksheet
Set xlApp = CreateObject("Excel.Application")
Set xlWbk = GetObject(varFile)
Set xlSht = xlWbk.Worksheets("sites")
'open destination workbook (already exists)
Set xlWb2 = GetObject(varNewFile)
'rename worksheet with same name
For Each xlSh2 In xlWb2.Sheets
If xlSh2.Name = "sites" Then
xlSh2.Name = "sitesOLD"
End If
Next xlSh2
'this next statement is where it fails
'copy across worksheet into existing workbook
xlSht.Copy Before:=xlWb2.Sheets(1)
我检查了源数据,单元格值在长度方面似乎没有问题(它是名称和地址信息,加上一些是/否指示符)。