Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Abspeichern mehrerer Tabellen in versch. Büchern

Abspeichern mehrerer Tabellen in versch. Büchern
25.05.2014 21:40:46
Achim
Hallo,
ich habe ein VBA-Programm geschrieben, 4 verschiedene Tabellenblätter in ebensoviele verschiedene Workbook kopiert (auf Knopfdruck),speichert und schließt und schließlich das ursprüngliche WB mit den 4 Tabellen schließt und dass natürlich mit ScreenUpdate = false.
Der Vorgang geht soweit gut, nur dass dabei Excel 2007 abgestürzt ist, ohne dabei eine Fehlermeldung abzugeben; lediglich "... es wird nach einer Lösung gesucht"
Kann es sein, dass das zu viele "größere" Aufgaben waren, die die Leistung des acer-Notbooks überschritten hat?
Gibt es eine Möglichkeit, diesen kopieren, speichern, nächstes Buch öffnen, speichern usw. Vorgang zu "entspannen" indem mann zwischen jedem Vorgang eine Art Pause programiert.
Oder kann sich jemand sonst vorstellen, weshalb Excel abstürtze ..., ich habe es schon unter Excel 2010 auf leistungstärkeren System getestet ohne Probleme ...
Schon einmal vielen Dank vorab ...

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Rückfragen
25.05.2014 22:28:27
Daniel
Wie sieht denn dein Code aus?
Wie groß sind die Tabellen, um die es da geht?
Tritt der Fehler nur bei Excel 2007 auf und in anderen Versionen nicht?
Wann genau tritt der Fehler auf, schon beim Erstellen der ersten Datei oder nach der letzten oder zwischendrin?
Gruß Daniel

AW: Abspeichern mehrerer Tabellen in versch. Büchern
26.05.2014 11:11:37
Achim
Also die Abarbeitung des Kopierens und Einfügens in die Ablagebücher funktioniert.
Excel stürzt zwar ab, aber die Aufgaben - also das Kopieren, einfügen, speicher usw. funktioniert.
Ich denke, dass das Problem bei Schließen des Workbooks in welchem sich die zu kopierenden Tabellenblätter befinden passiert.
Ich habe dies unter 2010 und 2003 getestet. Der Absturz erfolgte auf einen recht leistungsschwachen NB und unter 2007.
Ich meine selbiges schon auf meinem Netbook beobachtet zu haben, mit selben Ergebnis = ExcelAbsturtz
Deshalb meine Vermutung, dass etwas zu viele Kopiervorgänge die Leistung überschreitet.

Anzeige
AW: Abspeichern mehrerer Tabellen in versch. Büchern
26.05.2014 11:21:17
Achim
... hier wäre dann der Code; ich hoffe, Du/Ihr werdet daraus schlau .... ;-)

Sub Abheften()
Dim ws As Worksheet, twb As Workbook, ablagePfad As String, awb As Workbook, aws As  _
Worksheet
Dim i As Integer, BlattPos As Integer, AbheftungErfolg As Byte
If strSUVorgabe(6) = "Nein" Then Exit Sub
Set twb = ThisWorkbook
ablagePfad = pruefePfadZeichenkette(strSUVorgabe(1) & "\" & strSUVorgabe(2))
AbheftungErfolg = 0
For i = 1 To UBound(AblageBuecher)
'wenn Datei existiert, dann öffnen
If existiertOrdnerDatei(ablagePfad & AblageBuecher(i), 1) = True Then
Application.ScreenUpdating = False
If AblageBuecher(i) = WBNameSaA & ".xls" Then
'Samstagsblätter
If offenWB(AblageBuecher(i)) = False Then Application.Workbooks.Open _
Filename:=ablagePfad & AblageBuecher(i)
Set awb = Workbooks(AblageBuecher(i))
'für jedes Tabellenblatt in diesemWB, dass nicht Einstellungen oder Externe  _
Produktion heisst,
For Each ws In twb.Worksheets
If Not ws.Name = "Einstellungen" And Not Left(ws.Name, 7) = "Externe"  _
Then
For Each aws In awb.Worksheets 'AblageBuch von vorne nach hinten prü _
fen, ob Name = "Tabelle"
If Left(awb.Worksheets(aws.Index).Name, 7) = "Tabelle" Then
twb.Worksheets(ws.Index).Cells.Copy Destination:=awb. _
Worksheets(aws.Index).Cells
awb.Worksheets(aws.Index).Name = twb.Worksheets(ws.Index). _
Name
Exit For
ElseIf awb.Worksheets(aws.Index).Name = twb.Worksheets(ws.Index) _
.Name Then 'oder das abzulgende Blatt bereits vorhanden ist, dann Rückfrage
If MsgBox("Das Blatt " & twb.Worksheets(ws.Index).Name & "  _
ist bereits vorhanden," & vbLf & "soll es überschrieben werden?", vbYesNo Or vbQuestion, "Hinweis") = vbYes Then
twb.Worksheets(ws.Index).Cells.Copy Destination:=awb. _
Worksheets(aws.Index).Cells
awb.Worksheets(aws.Index).Name = twb.Worksheets(ws. _
Index).Name
Exit For
Else
Exit For
End If
Else 'sonst hinten anfügen
'hier weiter ...., neues Tabellenblatt hinzufügen und zu  _
sicherndes Blatt drauf kopieren.
If ws.Index = twb.Worksheets.Count Then
awb.Worksheets.Add after:=awb.Worksheets(awb.Worksheets. _
Count)
twb.Worksheets(ws.Index).Cells.Copy _
Destination:=awb.Worksheets(awb.Worksheets. _
Count).Cells
awb.Worksheets(awb.Worksheets.Count).Name = twb. _
Worksheets(ws.Index).Name
Exit For
End If
End If
Next aws
End If
Next ws
'WB speichern und schließen
awb.Close savechanges:=True
Else
'öffnen
If offenWB(AblageBuecher(i)) = False Then Application.Workbooks.Open _
Filename:=ablagePfad & AblageBuecher(i)
Set awb = Workbooks(AblageBuecher(i))
For Each ws In awb.Worksheets 'prüfen, ob Blatt mit dem Namen bereits  _
vorhanden ist
If ws.Name = abzulegendeBlaetter(i) Then
'ja: überschreiben
twb.Worksheets(abzulegendeBlaetter(i)).Cells.Copy _
Destination:=awb.Worksheets(ws.Index).Cells
awb.Close savechanges:=True
AbheftungErfolg = 1
Exit For
Else
If Left(ws.Name, 7) = "Tabelle" Then
'BlattPos = ws.Index
twb.Worksheets(abzulegendeBlaetter(i)).Cells.Copy _
Destination:=awb.Worksheets(ws.Index).Cells
awb.Worksheets(ws.Index).Name = abzulegendeBlaetter(i)
awb.Close savechanges:=True
AbheftungErfolg = 1
Exit For
End If
End If
Next ws
If AbheftungErfolg = 0 Then
'neues Blatt anlegen
awb.Worksheets.Add after:=awb.Worksheets(awb.Worksheets.Count)
twb.Worksheets(abzulegendeBlaetter(i)).Cells.Copy _
Destination:=awb.Worksheets(awb.Worksheets.Count).Cells
awb.Worksheets(awb.Worksheets.Count).Name = abzulegendeBlaetter(i)
awb.Close savechanges:=True
End If
End If
Application.ScreenUpdating = True
Else
'sonst Fehlermeldung ausgeben
End If
AbheftungErfolg = 0
Next i
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige