xls-Dateien im Format Excel 2007/2010 speichern
02.01.2013 02:43:58
fcs
Hallo C. Meerwald,
grundsätzlich kann man mehrere/viele in einem Dateiauswahldialog gewählte XLS-Dateien per Makro im neuen Excelformat (2007) speichern.
Dabei ist aber folgendes zu beachten:
1. XLS-Dateien mit Makro müssen im Format 2007/2010 mit Makros gespeichert werden. Das kann man im Makroablauf steuern.
2. XLS-Dateien mit Formelverknüpfungen zu anderen XLS-Dateien sollten nicht automatisch im neuen Format gespeichert werden. Das kann erhebliche Pobleme bei der Aktualisierung der Formeln verursachen, weil die Verknüpfungen nicht mehr existieren bzw. man verliert den Überblick bei den Verknüpfungen.
Hier ist Handarbeit sicherer: Jeweils die verknüpften Dateien öffnen. Dann alle geöffneten Dateien mit "speichern unter" im neuen Format speichern und zum Schluss die Dateien wieder schliessen.
Ich hab jedenfalls noch nicht im großen Maßstab Dateien mit Formel-Verknüpfungen per Makro vom xls ins xlsx/xlsm-Format konvertiert.
3. XLS-Dateien mit Makros
Es gibt ein paar VBA-Funktionen (z.B. Application.FileSearch-Object), die unter Excel 2007 nicht mehr existieren. Hier müssen Alternativen programmiert werden.
Einige Funktionen (Sortieren, Autofilter, Pivotberichte etc.) wurden erweitert/verbessert. Hier sollte ggf. die Programmierung anpasst werden.
Makros mit Symbolleisten-Modifikationen müssen wegen der geänderten Menstruktur ggf. komplett umgebaut werden.
Nachfolgend ein Makro mit Dateiauswahldialog zum Speichern im neuen Format.
Vor der Anwendung des Makros sollten die Dateien aber in einem separaten Laufwerk/Datenträger gesichert werden. Das Makro löscht die Dateien im Altformat. Die entsprechende Zeile ggf. entfernen.
Gruß
Franz
'Makro erstellt unter Office/Excel 2010
Sub Konvert_xls_to_Excel2010()
'konvertiert im Datei-Dialog gewählte Dateien vom xls-Format (2003 und älter) ins _
neue Excel-Dateiformat (xlsx oder xlsm)
Dim intAnzahl As Long, intCount As Integer, wbk As Workbook
Dim varItem As Variant, strOldFile As String
On Error GoTo Fehler
With Application.FileDialog(msoFileDialogOpen)
.Filters.Clear
.Filters.Add Description:="Excel 2003", Extensions:="*.xls"
.FilterIndex = 1
.AllowMultiSelect = True
If .Show = -1 Then
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
intAnzahl = .SelectedItems.Count
For Each varItem In .SelectedItems
intCount = intCount + 1
Application.StatusBar = "Datei " & intCount & " von " & intAnzahl & " wird bearbeitet: " _
& varItem
strOldFile = varItem
'Datei öffnen und im neuen Format speichern
Set wbk = Application.Workbooks.Open(Filename:=varItem, ReadOnly:=True, _
UpdateLinks:=False)
If wbk.HasVBProject = True Then
wbk.SaveAs FileFormat:=52 'xlsm-Datei
Else
wbk.SaveAs FileFormat:=51 'xlsx-Darei
End If
wbk.Close savechanges:=False
'Datei im alten Format löschen
VBA.Kill Pathname:=strOldFile
Next
End If
.Filters.Delete Filter:=1
End With
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.StatusBar = False
End With
End Sub