' Word2HTML.vbs
' $Id: word2html.vbs,v 1.5 2003/08/28 05:15:09 dion Exp $
Option Explicit
' Creates the output directories to the same depth as the inputFile specified
' param inBaseDir The base directory for input files
' param inputFile The file being processed
' param outBaseDir The base directory for output files
Function CreateOutputDirectories(inBaseDir, inputFile, outBaseDir)
Dim relativePath
relativePath = Mid(inputFile, Len(inBaseDir)+1)
' ensure the path doesn't end with a \
If Left(relativePath, 1) = "\" Then
relativePath = Right(relativePath, Len(relativePath) - 1)
End If
' ensure the input basedir doesn't end with a \
If Right(inBaseDir, 1) = "\" Then
baseDir = Left(inBaseDir, Len(inBaseDir) - 1)
End If
' ensure the output basedir doesn't end with a \
If Right(outBaseDir, 1) = "\" Then
outBaseDir = Left(outBaseDir, Len(outBaseDir) - 1)
End If
Dim index, folder, paths, Files
paths = Split(relativePath, "\")
folder = outBaseDir
Set Files = WScript.CreateObject("Scripting.FileSystemObject")
For index = LBound(paths) to UBound(paths) -1
folder = folder & "\" & paths(index)
If Not Files.FolderExists(folder) Then
Files.CreateFolder(folder)
End If
Next
CreateOutputDirectories = folder
End Function
Function ExportAsHTML(inputFile, outputFile)
Dim obj, HTMLFormat, wdDoNotSaveChanges
Set obj = WScript.CreateObject("Word.Application")
HTMLFormat = 8
wdDoNotSaveChanges = 0
obj.Visible = FALSE
obj.Documents.Open inputFile,,True
obj.ActiveDocument.SaveAs outputFile, HTMLFormat
obj.Quit wdDoNotSaveChanges
End Function
' Main chunk of code
Dim basedir, FileSys, inputFile, outputDir, outputFile
On Error Resume Next
' work out the directory structure for the input file
Set FileSys = WScript.CreateObject("Scripting.FileSystemObject")
' Fully Qualified File name
inputFile=FileSys.GetAbsolutePathName(WScript.Arguments(0))
' Directory to place results in
outputDir=FileSys.GetAbsolutePathName(WScript.Arguments(1))
' base directory for the input file
basedir = FileSys.GetAbsolutePathName(WScript.Arguments(2))
outputFile = CreateOutputDirectories(basedir, inputFile, outputDir) & "\" & _
FileSys.GetBaseName(inputFile) & ".html"
' check if output file exists and is newer than input file
' if it is, skip output
If FileSys.Exists(outputFile) Then
Dim fileOutput, fileInput
Set fileOutput = FileSys.GetFile(outputFile)
Set fileInput = FileSys.GetFile(inputFile)
If fileOutput.DateLastModified < fileInput.DateLastModified Then
ExportAsHTML inputFile, outputFile
End If
Else
ExportAsHTML inputFile, outputFile
End If