es geht bei meiner Anfrage konkret um eine Fehlermeldung, die ich bei Ausfuehren eines Excel-Makros auf einem Laptop bekomme - wenn ich das Makro auf einem
anderen Rechner (= PC) ausfuehre, laeuft es ohne Schwierigkeiten durch.
Die Fehlermeldung lautet: Laufzeitfehler '1004', zu viele verschiedene Zellformate.
Ich hab mich schon mal im WWW umgeschaut - dabei sind mir va 3 interessante Infos aufgefallen:
1 http://support.microsoft.com/default.aspx?scid=kb;de;213904
"Dieses Problem tritt auf, wenn die Arbeitsmappe mehr als ca. 4.000 verschiedene Kombinationen von Zellformaten enthält."
2 http://office.microsoft.com/de-ch/assistance/HP051992911031.aspx
"Zellformate pro Arbeitsmappe 4.000"
3 https://www.herber.de/forum/archiv/320to324/t323133.htm
Beschreibung, was ist ein zellformat
Daraus waere eigtl. herauszulesen, dass es sich um zu viele Zellformate handeln koennte - eh klar - allerdings gibt Microsoft nur eine ungefaehre Obergrenze
an - weiss jemand, von was die Obergrenze abhaengt ?
Prinzipiell geht es darum, relevante Berichte (= Tabellenblaetter aus diversen Excelfiles) in eine neue Arbeitsmappe (INFOFILE) für einen Berichtsempfänger
zusammenzukopieren.
Alle Dateien befinden sich in 1 Verzeichnis - nacheinander werden einzelne Excel-Files geoeffnet, aus anderen Files werden Arbeitsblaetter in diese
Excel-Files gemoved. Zum Schluss soll 1 neues File entstanden sein.
Hier ein gekuerzter Ausschnitt aus dem Code.
WICHTIG: Interessanterweise bekomm ich den Laufzeitfehler nur bei 'INFO-2 -> Berichtsmappe für 2
Hier werden ca. 50 Excel-files geoeffnet und daraus Arbeitsblaetter kopiert (alle anderen Codeteile arbeiten mit hoechstens 30 Excelfiles, aus denen
Tabellenblaetter kopiert werden !)
Option Explicit
'
Dim MAKROFILE As String
Dim INFOFILE As String 'Name der zu erstellenden Excel-Datei -> Endprodukt
Dim PFAD As String 'Pfad der Dateien
Dim DATENFELD As Range
Dim BEREICH As Range
Dim REPORTFILE As String 'Filename der durch Berichtsgruppe erstellten Reports (FILE....XLS)
Dim REPORTNAME As String 'Korrekter Reportname des XLR-Berichtes + Zusatz (-> Parameter)
Dim SHEETNAME As String 'Sheet in Reportfile das kopiert werden soll
Dim ANZAHLSHEETS As Integer
Sub INFO_FILE_ERSTELLEN()
MAKROFILE = ActiveWorkbook.Name
PFAD = "C:\XLexport\MonthlyOverviewReport\"
Application.DisplayAlerts = False
With Application
.Calculation = xlAutomatic
End With
'INFO-1 -> Berichtsmappe für 1
INFOFILE = "INFO_1.XLS"
Set BEREICH = Range("'" + MAKROFILE + "'" + "!" + "INFO_1")
Workbooks.Add xlWorksheet
Call SPEICHERN
ANZAHLSHEETS = 1
For Each DATENFELD In BEREICH
REPORTNAME = DATENFELD.Value
Call SCHLAUFE(REPORTNAME)
Next
Sheets("Tabelle1").Select
ActiveWindow.SelectedSheets.Delete
Call SPEICHERN
ActiveWorkbook.Close
'INFO-2 -> Berichtsmappe für 2
INFOFILE = "INFO_2.XLS"
Set BEREICH = Range("'" + MAKROFILE + "'" + "!" + "INFO_2")
Workbooks.Add xlWorksheet
Call SPEICHERN
ANZAHLSHEETS = 1
For Each DATENFELD In BEREICH
REPORTNAME = DATENFELD.Value
Call SCHLAUFE(REPORTNAME)
Next
Sheets("Tabelle1").Select
ActiveWindow.SelectedSheets.Delete
Call SPEICHERN
ActiveWorkbook.Close
'INFO-3 -> Berichtsmappe für VP-3 short Version
INFOFILE = "INFO_3.XLS"
Set BEREICH = Range("'" + MAKROFILE + "'" + "!" + "INFO_3")
Workbooks.Add xlWorksheet
Call SPEICHERN
ANZAHLSHEETS = 1
For Each DATENFELD In BEREICH
REPORTNAME = DATENFELD.Value
Call SCHLAUFE(REPORTNAME)
Next
Sheets("Tabelle1").Select
ActiveWindow.SelectedSheets.Delete
Call SPEICHERN
ActiveWorkbook.Close
End Sub
Sub SCHLAUFE(REPORTNAME)
' schreibt Reportname in Zelle "ReportName":
Range(MAKROFILE + "!" + "ReportName").Value = REPORTNAME
' Variable REPORTFILE übernimmt Wert gem. Zelle "ReportFile"
' "ReportFile" = Ergebnis von sVerweis auf Zelle "ReportName":
REPORTFILE = Range(MAKROFILE + "!" + "ReportFile").Value
' Öffnet Report
Workbooks.Open Filename:=PFAD + REPORTFILE
SHEETNAME = Range(MAKROFILE + "!" + "SheetName").Value
Sheets(SHEETNAME).Move After:=Workbooks(INFOFILE).Sheets(ANZAHLSHEETS) 'hier kommt die Fehlermeldung Laufzeitfehler '1004', zu viele verschiedene
Zellformate.
ANZAHLSHEETS = ANZAHLSHEETS + 1
Sheets(SHEETNAME).Name = REPORTNAME
With ActiveSheet.PageSetup 'Fusszeile = Filename + Registername
.LeftFooter = "&6XLR / &F-&A / &D-&T / Name"
End With
Range("A1").Select
Workbooks(REPORTFILE).Close
End Sub
'------------------------------------------------------------------------
Sub SPEICHERN()
'Speichern
ActiveWorkbook.SaveAs Filename:= _
PFAD + INFOFILE, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
CreateBackup:=False
End Sub
Langer Rede kurzer Sinn:
wie oben schon einmal erwaehnt:
Die Fehlermeldung ist eigtl. klar - es handelt sich anscheinend um zu viele Zellformate - da M$ allerdings nur eine ungefaehre Obergrenze fuer die Anzahl der Zellformate in einem Excelfile angibt - weiss jemand, von was diese Obergrenze abhaengt ?
Vielen Dank,
Markus