VB-Tec.de Visual Basic - Technik, FAQ, Tricks, BeispieleHome / Objekte / Office / Word2HTML Word-Dokumente in HTML konvertieren |
| 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