我有一個工作簿,其中包含一些封面,然後是包含幾張圖的背面一堆工作表。圖形頁面通過一遍又一遍地複製粘貼一張表格(「MasterFormat」)來創建,每次更改幾個關鍵值。當工作簿命中50個工作表時,複製工作表宏將停止執行任何操作
該宏最初用於相當快地生成一個Copy Method of Worksheet Class failed
錯誤。我終於找到了如何解決它,從http://support.microsoft.com/kb/210684。
問題是,我用我的更新版本有無盡的問題;主要是它繼續愉快地運行,但實際上不會在一段時間後複製任何東西。部分原因是更新後的邏輯包含了幾個Set x = y, if x is nothing then
,它們(據我所知)只能在抑制錯誤的情況下工作,所以這就是我所做的。但是另一方面,在50頁之後停止複印,並且沒有給出解釋(儘管這可能是on error goto 0
的錯位)。
有沒有人知道我應該修復,使其實際上覆制所有牀單,而不僅僅是無聊和停止?
的代碼如下:
Sub GenerateSheets()
Application.ScreenUpdating = False
Dim oBook As Workbook
On Error Resume Next
Set oBook = Workbooks("SSReport.xls")
If oBook Is Nothing Then
Set oBook = Application.Workbooks.Open("SSReport.xls")
End If
On Error GoTo 0
Dim i, j As Integer
Dim SheetName As String
Dim ws As Worksheet
Const PairingCount = 63
Dim Pairings(1 To PairingCount, 1 To 2) As String
For i = 1 To PairingCount
Pairings(i, 1) = oBook.Sheets("SSPairings").Rows(i + 1).Cells(1)
Pairings(i, 2) = oBook.Sheets("SSPairings").Rows(i + 1).Cells(2)
Next i
For i = 1 To PairingCount
If i Mod 5 = 0 Then
oBook.Close SaveChanges:=True
Set oBook = Nothing
Set oBook = Application.Workbooks.Open("SSReport.xls")
End If
Application.ScreenUpdating = False
j = oBook.Worksheets.Count
SheetName = "P" & Pairings(i, 1) & Pairings(i, 2)
On Error Resume Next
Set ws = oBook.Sheets(SheetName)
If ws Is Nothing Then
On Error GoTo 0
oBook.Sheets("MasterFormat").Copy After:=Sheets(j)
oBook.Sheets("MasterFormat (2)").Name = SheetName
End If
oBook.Sheets(SheetName).Cells(1, 2) = Pairings(i, 1)
oBook.Sheets(SheetName).Cells(1, 5) = Pairings(i, 2)
oBook.Sheets(SheetName).Cells(1, 8) = "P"
Next i
Application.ScreenUpdating = True
End Sub
它從元的工作簿,這是KB文章我掛上面的建議運行。有趣的是,儘管Open workbook
,如果主工作簿沒有打開,它似乎並不工作。
不良形式的位標記自己的答案接受然後,不是? – Lunatik 2009-05-12 08:44:13