Konvertierung in anderes Format und Fehlerroutine

10/02/2010 - 12:59 von Tobias Bundy | Report spam
Hallo Zusammen,

ich habe mehrere Tausend Office-Dateien, davon eine größere Anzahl im
Word-Dateien im Office96-Format, die sich nach einem Upgrade auf Office 2007
nicht mehr öffnen lassen.
Mein Plan war die Word95-Dateien über ein VBA-Script in einer
Office2003-Installation zu öffnen und wieder speichern zu lassen, um sie in
ein Format umzuwandeln mit dem Office2007 umgehen kann.
Das hierfür eingesetzte Script (Quell-Code s. weiter unten) hat bei einem
Test auch recht gut funktioniert, allerdings habe ich in diversen Foren
gelesen, dass bei einer größeren Anzahl von Daten die Funktion
"Application.FileSearch" zu Abstürzen neigt.

Daher nun meine Frage, gibt es eine bessere Lösung die Konvertierung
durchzuführen, und wie könnte ich das Script um eine Fehlerroutine
erweitern, die z.B. Name und Pfad einer Datei bei der Öffnen bzw. Speichern
fehlgeschlagen ist in ein Log schreibt.

Vielen Dank.

Grüße

Tobias

Quellcode des VBA-Scripts:
Sub DokOeffnenUndSpeichern()
Dim i As Long

With Application.FileSearch
' Basisverzeichnis fuer die Suche
.LookIn = "C:\test\"
' Verzeichnisstruktur durchsuchen
.SearchSubFolders = True
' Filter fuer Dateisuche
.FileName = "*.doc"

' Pruefung ob Dateien vorhanden sind
If .Execute(SortBy:=msoSortByLastModified, _
SortOrder:=msoSortOrderDescending) > 0 Then

' Abarbeitung aller gefunden Word-Dateien
For i = 1 To .FoundFiles.Count
Documents.Open FileName:=.FoundFiles(i)

' Speichern und Schliessen
Documents(.FoundFiles(i)).Save
Documents(.FoundFiles(i)).Close

Next i

End If

End With

End Sub
 

Lesen sie die antworten

#1 Thomas Gahler
10/02/2010 - 21:48 | Warnen spam
Hallo Tobias

Daher nun meine Frage, gibt es eine bessere Lösung die Konvertierung
durchzuführen, und wie könnte ich das Script um eine Fehlerroutine
erweitern, die z.B. Name und Pfad einer Datei bei der Öffnen bzw.
Speichern fehlgeschlagen ist in ein Log schreibt.


Ich würde an deiner Stelle gar nicht erst auf eine .log-Datei aufbauen
sondern die Dateien an einem neuen Ort speichern. So würde ich paralle zu
deiner Baumstrucktur c:\test eine zweeite aufbauen c:\konvertiert\test und
alle Dateien dort mittels .SaveAs speichern und das Original löschen oder
umbenennen (z.B. *.doc auf *.doc95). Vorteil der ganzen Angelegenheit, du
wenn dein Programm tatsàchlich abstürtz musst du es nur neue starten und die
KOnvertierung bedinnt dort wo sie abgebrochen war.

Du benötigst somit nur ein paar Funktionen
- extrahieren des Pfad aus .FoundFiles(i)
- extrahieren des Dateinamens aus .FoundFiles(i)
- erstellen einer Verzeichnisstruktur

Kriegst du das hin, ansonsten kann ich dir auch Code zu diesen Funktioinen
liefern.


Thomas Gahler
Co-Autor von »Microsoft Word-Programmierung.
Das Handbuch« (MS Press)


- Windows Vista (SP2), Office 2007 (SP2)

Ähnliche fragen