Fehlermeldung Excel

Hallo,

mit einem Makro (aus einem Internetforum) speichere ich alle Registerblätter einer Tabelle als neue Tabellen, die den Namen des jeweiligen Registerblattes erhalten. Dies hat mit Excel 2003 ohne Probleme funktioniert, jetzt bei Excel 2010 kommt beim Öffnen der neuen Tabellen immer die Fehlermeldung:

„Sie versuchen eine Datei zu öffnen, test.xsl, deren Format von dem der Dateierweiterung angegebenen abweicht. Stellen Sie sicher, dass die Datei nicht beschädigt ist und aus einer vertrauenswürdigen Quelle stammt, bevor Sie die Datei öffnen. Wollen Sie die Datei jetzt öffnen?“

Kann man den VBA-Code an Excel 2010 anpassen, oder sonst etwas ändern um die nervige Meldung weg zu bekommen?

Der Code:
Sub einzelne_Tabs_Speichern()
'speichert die Register als Tabellen in gleichen Pfad
Dim wks As Worksheet, Pfad As String
Pfad = ThisWorkbook.Path & „“
For Each wks In ThisWorkbook.Worksheets
wks.Copy
ActiveWorkbook.SaveAs Pfad & wks.Name & „.xls“
ActiveWorkbook.Close
Next wks
End Sub

Gruß Harald

Hallo Harald,

an der Stelle, wo das Makro „.XLS“ an den Dateinamen anhängt, musst Du nur „.XLSX“ im Makro angeben. Das ist die neue Erweiterung ab EXCEL 2007.

Danach sollte es ohne Fehlermeldung gehen.

Probiere das mal mit einer Sicherheitskopie aus.

Viel Erfolg

Ullrich Sander

Hallo,

mit der Endung klappt es ohne die Fehlermeldung!
Aber das Makro selbst funktioniert nicht mehr, kann es sein, dass daran liegen, dass ich heute das Modul in meine persönliche Makromappe (*.xlsb) gesteckt hatte?
Jetzt sind alle neuen Tabellen leer und im Ordner des *.xlsb (START) gespeichert.
Vorher waren die im Ordner der urspünglichen Tabelle abgelegt

Gruß Harald

Hallo Harald,

mit der Endung klappt es ohne die Fehlermeldung!

ist noch zu prüfen was da geschieht.
In der Meldung stand doch was von „öffnen“? Wieso steht das
da wenn du eine Mappe speichern willst ist eine Frage.

Vor 2007 reichte die Angabe von xls im Code.
Ab 2007 muß man auch dabei den Typ(e) angeben.
Kein 100 %iges Wissen von mir mangels diesbezüglichen
Versuchen, aber glaub mir es lohnt sich da mal gezielt
nachzuforschen.

Aber das Makro selbst funktioniert nicht mehr, kann es sein,
dass daran liegen, dass ich heute das Modul in meine
persönliche Makromappe (*.xlsb) gesteckt hatte?
Jetzt sind alle neuen Tabellen leer und im Ordner des *.xlsb
(START) gespeichert.
Vorher waren die im Ordner der urspünglichen Tabelle abgelegt

Wieso funktioniert das Makro nicht mehr? Natürlich funktioniert
es irgendwie sonst gäbe es die neuen Tabellen nicht.
Das Problem ist z.B. diese Codezeile:
For Each wks In ThisWorkbook.Worksheets

Was ist wohl Thisworkbook wenn der Code in person(a)l.* steht?
Ich hoffe das reicht als Hilfe, wenn nicht, kein Akt, frag gerne
nach.

Gruß
Reinhard

Hallo Reinhard,

nach einiger Zeit überlegen:
Ich vermute, dass das Makro direkt in der *.xlsb ausgeführt wird, auch wenn ich dieses von einer anderen Tabelle aufgerufen wird.
Auch die einzelnen Tabellen werden im Ordner XLSTART ausgeführt.
Kann man dies beim „Dim“ steuern?

Gruß Harald

Hallo Harald,

Ich vermute, dass das Makro direkt in der *.xlsb ausgeführt
wird, auch wenn ich dieses von einer anderen Mappe
aufgerufen wird.

ja, die Bezugsbasis für den Code ist immer das Modul
wodrin er steht.
Darauf bezieht sich z.B. ThisWorkbook

Kann man dies beim „Dim“ steuern?

Nein, Dim hat da nix mit zu tun, s. nachfolgende Codes.

Gruß
Reinhard

Option Explicit

Sub einzelne\_Tabs\_Speichern\_als\_XLSX()
'speichert die Register als xlsx-Mappen in gleichen Pfad
Dim wks As Worksheet, Pfad As String
Pfad = ActiveWorkbook.Path & "\"
For Each wks In ActiveWorkbook.Worksheets
 wks.SaveAs Pfad & wks.Name & ".xlsx", xlOpenXMLWorkbook
Next wks
ActiveWorkbook.Close
End Sub

Sub einzelne\_Tabs\_Speichern\_als\_XLS()
'speichert die Register als xls-Mappen in gleichen Pfad
Dim wks As Worksheet, Pfad As String
Pfad = ActiveWorkbook.Path & "\"
For Each wks In ActiveWorkbook.Worksheets
 wks.SaveAs Pfad & wks.Name & ".xls", xlExcel8
Next wks
ActiveWorkbook.Close
End Sub

Danke Reinhard,

das Makro klappt!
Problem ist, dass nicht nur ein Registerblatt in der jeweiligen Tabelle gespeichert ist, sondern es ist eine Kopie (mit allen Registern) vom Original mit den Namen der jeweiligen Registerblätter.
Kannst Du das Modul so ändern, dass jeweils nur das eine Register zur jeweiligen Tabelle gespeichert wird?

Danke Harald

Problem ist, dass nicht nur ein Registerblatt in der
jeweiligen Tabelle gespeichert ist, sondern es ist eine Kopie
(mit allen Registern) vom Original mit den Namen der
jeweiligen Registerblätter.
Kannst Du das Modul so ändern, dass jeweils nur das eine
Register zur jeweiligen Tabelle gespeichert wird?

Hallo Harald,

gut, mein Fehler, Workheet.SaveAs habe ich mal benutzt da
ich vom Namen her dachte …, naja, ging schief :frowning:
Also doch wieder Workbook.SaveAs :wink:
Mach die Hochkommas weg wenn auch die aktive Mappe geschlossen
werden soll.

Gruß
Reinhard

Option Explicit

Sub einzelne\_Tabs\_Speichern\_als\_XLSX()
'speichert die Register als xlsx-Mappen in gleichen Pfad
Dim wks As Worksheet, Pfad As String
Pfad = ActiveWorkbook.Path & "\"
For Each wks In ActiveWorkbook.Worksheets
 wks.Copy
 ActiveWorkbook.SaveAs Pfad & wks.Name & ".xlsx", xlOpenXMLWorkbook
 ActiveWorkbook.Close
Next wks
'ActiveWorkbook.Close
End Sub

Sub einzelne\_Tabs\_Speichern\_als\_XLS()
'speichert die Register als xls-Mappen in gleichen Pfad
Dim wks As Worksheet, Pfad As String
Pfad = ActiveWorkbook.Path & "\"
For Each wks In ActiveWorkbook.Worksheets
 wks.Copy
 ActiveWorkbook.SaveAs Pfad & wks.Name & ".xls", xlExcel8
 ActiveWorkbook.Close
Next wks
'ActiveWorkbook.Close
End Sub

Danke Reinhard,
jetzt klappt es wunderbar!

Harald