KB0204: Einige Excel-Dateien mit Datenverknüpfungen sind langsam
- Startseite
- Ressourcen
- Knowledge Base
- KB0204
Problem
Wenn eine Excel-Datei Excel-Datenverknüpfungen enthält (siehe Excel-Datenverknüpfungen) und zu viele Zellformatvorlagen aufweist, kann das Scrollen sehr langsam werden und Excel scheint nicht mehr zu reagieren.
Dieses Problem kann auftreten, wenn die Excel-Datei mehr als ca. 3000 Zellformatvorlagen enthält. Sie können die Anzahl der Zellformatvorlagen mit dem folgenden VBA-Befehl im Immediate Window überprüfen:
print Activeworkbook.Styles.Count Mehr lesen
Die Schritte zur Überprüfung im Detail:
- Drücken Sie Alt+F11, um den VBA-Editor zu öffnen.
- Wechseln Sie zum Immediate Window. Wenn es nicht sichtbar ist, können Sie es anzeigen, indem Sie auf View > Immediate Window klicken.
- Geben Sie den folgenden Befehl ein und drücken Sie Enter
print Activeworkbook.Styles.Count
Lösung: Betroffene Arbeitsmappen bereinigen
- Kopieren Sie Ihre Arbeitsblätter in eine neue Arbeitsmappe Mehr lesen
In Office 2013 und höher verhindert das Kopieren von Arbeitsblättern zwischen Arbeitsmappen standardmäßig, dass sich nicht verwendete Zellformatvorlagen ansammeln:
- Wählen Sie alle Blätter in Ihrer Arbeitsmappe aus, indem Sie SHIFT gedrückt halten und auf das erste und letzte Arbeitsblatt klicken
- Klicken Sie mit der rechten Maustaste auf die Auswahl: Move or copy… > To book: (new book) und aktivieren Sie Create a copy > OK
- Speichern Sie die neue Arbeitsmappe unter einem neuen Namen
- Bereinigen Sie Ihre Arbeitsmappen mit einem Bereinigungstool Mehr lesen
Verwenden Sie das von Microsoft in KB213904 empfohlene Bereinigungstool. Klicken Sie im XLStyles Tool auf Get Excel File, aktivieren Sie Force all cell styles to 'Normal' und klicken Sie dann auf Process File. Wenn Excel mit der bereinigten Datei geöffnet wird, speichern Sie sie unter einem neuen Namen.
- Entfernen Sie benutzerdefinierte Zellformatvorlagen aus Ihrer Arbeitsmappe mithilfe eines VBA-Makros Mehr lesen
Öffnen Sie den VBA-Editor mit Alt+F11. Wählen Sie Ihre Arbeitsmappe aus und klicken Sie auf Insert > Module. Fügen Sie dann eines der folgenden Makros ein und führen Sie es aus, indem Sie F5 drücken:
DeleteCustomStyles() entfernt alle benutzerdefinierten Zellformatvorlagen aus Ihrer Arbeitsmappe.
Sub DeleteCustomStyles() Dim st As Style Dim i, i_cust As Long i_cust = 0 For i = (ActiveWorkbook.Styles.Count) To 1 Step -1 With ActiveWorkbook.Styles(i) If .BuiltIn = False Then On Error Resume Next .Locked = False On Error GoTo 0 If Not .Locked Then .Delete i_cust = i_cust + 1 End If End If End With If (i Mod 100) = 0 Then Debug.Print i Next MsgBox "Gelöschte Formatvorlagen: " & i_cust & " Formatvorlagen" & Chr(13) & "Verbleibende Formatvorlagen: " & ActiveWorkbook.Styles.Count End SubRemove_Styles() entfernt nur nicht verwendete benutzerdefinierte Zellformatvorlagen aus Ihrer Arbeitsmappe. Es ähnelt dem obigen Makro, kann jedoch sehr lange dauern. Das Makro wurde vom Microsoft Office Support bereitgestellt.
Option Explicit Dim st_array() As String Dim i_x As Long Sub Remove_Styles() Dim stname As String Dim ustname As String Dim uc As Range Dim retval As Boolean Dim ust As Style Dim sh As Worksheet i_x = 0 For Each sh In ActiveWorkbook.Worksheets For Each uc In sh.UsedRange stname = uc.Style.Name retval = Check_Array(stname) If retval = False Then ReDim Preserve st_array(i_x) st_array(i_x) = stname i_x = i_x + 1 End If Next uc Next sh For Each ust In ActiveWorkbook.Styles If ust.BuiltIn = False Then ustname = ust.Name retval = Delete_Styles(ustname) On Error Resume Next If retval = True Then ust.Delete On Error GoTo 0 End If Next ust End Sub Function Delete_Styles(stylename As String) As Boolean Delete_Styles = True Dim i_y As Long For i_y = 0 To i_x - 1 If st_array(i_y) = stylename Then Delete_Styles = False Next i_y End Function Function Check_Array(stylename As String) As Boolean Check_Array = False Dim i_y As Long For i_y = 0 To i_x - 1 If st_array(i_y) = stylename Then Check_Array = True Next i_y End Function
Die beste Lösung wäre, das Einfügen nicht verwendeter Zellformatvorlagen zu verhindern. Dafür müsste Microsoft jedoch einen Fehler in Excel 2007 und höher beheben. Bisher hat Microsoft die geschäftlichen Auswirkungen nicht als groß genug eingestuft, um diesen Fix bereitzustellen. Wenn Ihr Unternehmen mit Microsoft einen Servicevertrag für den Office-Support abgeschlossen hat und Sie sich wegen einer Lösung an Microsoft wenden möchten, geben Sie bitte folgende Microsoft-interne Fallnummer an: 113012810172527.
Erläuterung
Einige .xlsx-Arbeitsmappen enthalten aufgrund von Fehlern und problematischem Code-Design in Excel sehr viele Zellformatvorlagen (mehrere zehntausend). Dazu tragen auch Reporting-Tools bei, die manchmal unnötig viele Zellformatvorlagen erzeugen.