• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Macro voor kopieren sheets 40 keer

Status
Niet open voor verdere reacties.

tijmiek

Gebruiker
Lid geworden
22 mrt 2006
Berichten
21
Wie kan mij helpen het volgende probleem op te lossen. Ik heb een macro geschreven die sheet 1 veertig keer kopieerd. Echter steeds bij sheets 40, een storing.

Zie bestand
 

Bijlagen

Tijmiek

Ik vermoed sterk dat dit beter zal gaan dan de code die Excel "produceert" met zijn Macro recorder.

Code:
Sub CopySheets()
    Dim x As Integer
    For x = 1 To 39
        Sheets("1").Copy After:=Sheets(x)
        Sheets("1 (2)").Name = x + 1
        Sheets("1").Select
    Next
End Sub

Wigi
 
Veel dank, zit er goed uit. Helaas loopt de code vast bij nummer 39/40.

Kan dat liggen aan het feit dat het bestand dat 1,8 mb is?
 
tijmiek zei:
Veel dank, zit er goed uit. Helaas loopt de code vast bij nummer 39/40. Kan dat liggen aan het feit dat het bestand dat 1,8 mb is?

Probeer het dan ook eens op een leeg bestand met slechts 1 tabblad. Of met verminderde opmaak (waardoor de bestandsgrootte drastisch vermindert).
 
Re

Met een leeg bestand werkt het inderaad wel. Als ik de macro splits in 1 t/m 20 en dan opslaan en sluiten en openen en dan 21 t/m 40 lukt hel wel. Het ligt dus duidelijk aan de grote van het bestand. Is er niet een andere meer elegante oplossing dan tussendoor opslaan en sluiten?
 
Probeer dit eens

Code:
Sub CopySheets()
Dim x As Integer
Application.Calculation = xlCalculationManual
For x = 1 To 39
    Sheets("1").Copy After:=Sheets(x)
    Sheets("1 (2)").Name = x + 1
    Sheets("1").Select
Next
Application.Calculation = xlCalculationAutomatic
End Sub
 
Re:

Beste, het blijft ook zonder opmaak instabiel. Krijg met willekeurig tabladen een foutmelding. Iemand een idee?????
 
Aangezien het bestand te groot is kan je het waarschijnlijk hier niet bijvoegen? Is het trouwens confidentiële informatie?
 
Misschien eens even hier uploaden? Of via een andere manier zodat we er eens kunnen naar kijken en wat uitproberen.
 
Re

Liever hier niet uploaden, geef dan liever uw e-mail (gaat namelijk om meerdere bestanden)
 
Re

Sorry, ik had de link niet gezien. Maar toch heb ik geloof ik uw email nodig.
 
Bij mij loopt het reeds na 25 vast. Zonder paswoord kan ik natuurlijk weinig VBA code bekijken...
 
BUG in Excel

Excel will crash with an access violation if more than 36 sheets are added to the
workbook during one Excel session. If we add the first say 30 sheets, save,
close and restart Excel we can add the rest of the charts!




This is a bug in Excel that I've seen quite a bit. It seems to be
triggered by the number of sheet copy *operations*, not the actual number of
sheets copies. Therefore, you can usually get around it by copying multiple
sheets in a single operation.


You've said below that the user selects which sheets to copy to the new
workbook. In that case you should be able to load all of the sheet names
into an array and copy them all in one operation (if these sheets are very
large you may have to split it up and do five or ten at a time). Here's a
basic example:


Sub CopyMultipleSheets()
Dim wkbNewBook As Excel.Workbook
Dim aszSheetArray() As String
''' Assume your user interface has determined the
''' number and names of the sheets to copy here.
ReDim aszSheetArray(0 To 2)
aszSheetArray(0) = "Sheet1"
aszSheetArray(1) = "Sheet2"
aszSheetArray(2) = "Sheet3"
''' Copy all of the worksheets at once
ThisWorkbook.Sheets(aszSheetArray).Copy
''' The active workbook will now be a new workbook
''' containing the copied sheets.
ActiveWorkbook.SaveAs "D:\NewBook.xls"
End Sub

The bug only affects Excel 97/2000. It was fixed in 2002.


Zou dit het antwoord kunnen zijn?

Pierre


Sub copysheets()
For i = 1 To 40
Worksheets("Blad1").Copy _
After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
'the copied sheet is now the activesheet
ActiveSheet.Name = "Sheet" & i
Next
End Sub

zie ook :http://support.microsoft.com/default.aspx?scid=kb;en-us;210684&Product=xlw
 
Laatst bewerkt:
Re

Alvast bedankt, maar nu voegt de macro steeds een nieuwe sheet toe. Ik moet juist de eerste sheet 39 keer kopieren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan