|
本帖最后由 adders 于 2012-3-8 11:11 编辑
youszhang 发表于 2012-3-6 23:46
谢谢哦,代码已测试,出现另一个问题:
如果使用wb.Sheets("sheet1"),则提示下标越界,不知是为什么
ok, 下标越界是因为你选中的工作簿不是每一个都有一个名叫"Sheet1"的工作表.
先纠正我前面的一个说法,sheets.copy应该是可行的.
这个Copy方法失败应该是Excel的一个bug,当你一次拷贝太多的工作表而中间没有保存时,会有这个错误提示.有的人试验是在copy到30至40个工作表左右出现,不过微软的意思似乎是:到多少个表会失败取决于你Copy过来的工作表的size.
我没有找到补丁,但是找到这个: http://support.microsoft.com/kb/210684/en-us
根据微软的说法,在COPY一些Sheets后要保存一下工作簿,再进行COPY,直到把你需要的表全部COPY完.你可以把定期保存(比如每保存25个Sheets就保存一下工作簿,微软的示例中是copy 100个Sheets, 保存关闭工作簿,再重新打开工作簿,再loop)写进你的代码中,再测试一下.
微软示例部分代码:- For iCounter = 1 To 275
- oBook.Worksheets(1).Copy After:=oBook.Worksheets(1)
- 'Uncomment this code for the workaround:
- 'Save, close, and reopen after every 100 iterations:
- If iCounter Mod 100 = 0 Then
- oBook.Close SaveChanges:=True
- Set oBook = Nothing
- Set oBook = Application.Workbooks.Open("c:\test2.xls")
- End If
- Next
复制代码
|
|