数枚の表紙があり、後ろに数枚のグラフが含まれているブックがあります。グラフページは、1枚のシート(「MasterFormat」)を何度も繰り返しコピーして貼り付け、毎回いくつかのキー値を変更することによって作成されます。コピーワークシートマクロは、ワークブックが50個のワークシートに当たったときに何もしないでください。
Copy Method of Worksheet Class failed
エラーでかなり急速に処理されたマクロです。私は最終的にそれを修正する方法を見つけた、http://support.microsoft.com/kb/210684から。
問題は、私は更新版に無限の問題があったことです。主に幸せに走り続けていますが、しばらく後には何もコピーしません。なぜ私が満足しているのは、更新されたロジックにはいくつかのエラーが含まれているということです(これまでのところ知っている限り)。しかし、一方では、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