Kontakt
DSVGO
Historie | |
---|---|
24.08.2005 | Bug bzgl. HTML-Konverter entfernt |
25.08.2001 | Unterstützung von Word2000 (Hinweis von Rimma Levina, GGRZ Hagen) |
02.11.2000 | Automatische Bestimmung des HTML-Konverters |
09.07.2000 | Erste Version |
Mit folgendem Code kann ein gegebenes Word-Dokument in ein HTML-Dokument konvertiert werden.
Da dabei (wegen der ggf. vorhandenen Bilder) mehrere Dateien entstehen können, kann ein Zielverzeichnis angegeben werden, wo die generierten Dateien abgelegt werden sollen. Wird kein Zielverzeichnis angegeben, so ist das Ergebnis im temporären Verzeichnis "[Temp]\Word2HTML\" zu finden. Die Funktion gibt daher den vollständigen Pfad zur generierten HTML-Datei zurück.
Um diese Routine benutzen zu können, muss natürlich Microsoft Word (zusammen mit dem HTML-Exportfilter) auf dem Rechner installiert sein. Außerdem muss im VB-Projekt unter Projekte/Verweise das Häckchen vor "Microsoft Word Object Library" (o.ä.) gesetzt sein.
s = Word2HTML("D:\Test\Bericht.doc") MsgBox s 'ergibt z.B. "C:\TEMP\Word2HTML\Bericht.htm" s = Word2HTML("D:\Test\Bericht.doc", "C:\x\") MsgBox s 'ergibt "C:\x\Bericht.htm"
Der folgende Funktion benutzt die in "Temp-Verzeichnis bestimmen" gezeigte TempDir-Funktion, um ein Arbeitsverzeichnis anzulegen. Mit Hilfe der SplitPath-Funktion aus "Dateipfad splitten" wird ein Dateiname generiert. Das Arbeitsverzeichnis wird geleert und anschließend Word "beauftragt", ein HTML-Dokument darin zu erzeugen. Ggf. werden dann noch alle generierten Dateien in das gewünschte Zielverzeichnis kopiert.
Public Function Word2HTML( _ ByVal DocPath As String, _ Optional ByRef DestDir As String _ ) As String Dim TmpPath As String Dim App As Word.Application Dim Doc As Word.Document Dim FileName As String Dim File As String 'Arbeitsverzeichnis vorbereiten: TmpPath = TempDir() & "Word2HTML\" On Error Resume Next MkDir TmpPath On Error GoTo 0 'Ggf. Zielverzeichnis bestimmen: If DestDir = "" Then DestDir = TmpPath If Right$(DestDir, 1) <> "\" Then DestDir = DestDir & "\" SplitPath DocPath, Title:=FileName Word2HTML = DestDir & FileName & ".htm" 'Arbeitsverzeichnis leeren: File = Dir$(TmpPath & "*") Do While Len(File) Kill TmpPath & File File = Dir$ Loop 'Eigentlicher Export: Set App = New Word.Application Set Doc = App.Documents.Open(DocPath) Doc.SaveAs TmpPath & FileName & ".htm", HTMLFileFormat(App) Set Doc = Nothing App.Documents.Close wdDoNotSaveChanges App.Quit DoEvents 'Ergebnis-Dateien ggf. ins Ziel kopieren: If DestDir <> TmpPath Then On Error Resume Next MkDir DestDir On Error GoTo 0 'Kopier-Schleife: File = Dir$(TmpPath & "*") Do While Len(File) FileCopy TmpPath & File, DestDir & File Kill TmpPath & File File = Dir$ Loop On Error Resume Next RmDir TmpPath On Error GoTo 0 End If End Function
Die folgende Hilfsfunktion bestimmt den Word-internen Code für das SaveFormat (HTML-Filter). Ab Word2000 gibt es dafür die Konstante wdFormatHTML; Bei älteren Word-Versionen muss der entsprechende Konverter mittels einer Schleife gesucht werden:
Private Function HTMLFileFormat( _ WordApp As Word.Application _ ) As Long Dim obj As Word.FileConverter Static FileFormat As Long 'wird wiederverwendet If FileFormat = 0 Then If Int(Val(WordApp.Version)) > 8 Then 'Word2000 besitzt Konstante: FileFormat = 8 'wdFormatHTML Else 'Word97-Konverter suchen: For Each obj In WordApp.FileConverters If obj.ClassName = "HTML" Then FileFormat = obj.SaveFormat Exit For End If Next obj End If End If HTMLFileFormat = FileFormat End Function
© Jost Schwider, 09.07.2000-24.08.2005 - http://vb-tec.de/wordhtml.htm