How to convert Microsoft Word or Microsoft Excel documents to HTML

How to convert Microsoft Word or Microsoft Excel documents to HTML

This Web Query Save agent takes a Microsoft Word or Microsoft Excel file and converts it to HTML.

It then creates a new Lotus Notes document and attaches the converted HTML files and the original Microsoft Office file to respective rich-text fields.

This allows Lotus Notes users to view an HTML version of an attachment via the Web, without having to download and open Microsoft Word or Microsoft Excel.

To implement this, only two forms are required. The first is a form with a file upload control that calls the attached WQS agent. The second is a form called "Document" with four fields: HTMLFilename (text), PrintFilename (text), PrintFile (richtext), HTMLFiles (richtext).

Your Lotus Domino server must be running on a Win32 platform with Microsoft Office 2003 installed, so that the Web Query Save agent can instantiate Microsoft Word or Microsoft Excel through the "CreateObject" method.

Sub Initialize
 
userErrorMessage$ = "" 'string to send in case of error
On Error Goto Uh_Oh
 
'Open the new agent log 
Dim agentLog As NotesLog
Set agentLog = New notesLog("Agent log")
Call agentLog.OpenAgentLog 

'get the current document
Dim session As New NotesSession
Dim db As NotesDatabase
Dim webDoc As NotesDocument   
Dim v2File As NotesItem
Dim fileName As String
Dim OFF As Variant
Dim NotesPath As String 
Dim TempPath As String 
Set db = session.CurrentDatabase
Set webDoc = session.DocumentContext

'Get server name as the NotesDatabase 
must have the server

    Requires Free Membership to View

    Register today to access targeted resources from our editorial writers and independent industry experts focused on Lotus Domino, Notes, Workplace and other related technologies.

    By submitting your registration information to SearchDomino.com you agree to receive email communications from TechTarget and TechTarget partners. We encourage you to read our Privacy Policy which contains important disclosures about how we collect and use your registration and other information. If you reside outside of the United States, by submitting this registration information you consent to having your personal data transferred to and processed in the United States. Your use of SearchDomino.com is governed by our Terms of Use. You may contact us at webmaster@TechTarget.com.

argument Dim server As String Dim agent As Variant Set agent = session.CurrentAgent server = agent.ServerName 'Set up Temp directory for working with OFF Files NotesPath = session.GetEnvironmentString ("Directory", True) TempPath = NotesPath & "TempOFF" On Error Goto TempDirError attr% = Getfileattr(TempPath) If attr% <> 16 Then Mkdir TempPath End If FinishPathSetup: 'used as the resume point after an error has occured If Not webdoc.HasItem( "$File" ) Then Goto NoFileError 'Get handle to OFF file from the uploaded document and check for .doc or .xls Set v2File = webdoc.GetFirstItem ( "$File" ) fileName = v2File.Values(0) fileExt = Ucase$(Right$(fileName,3)) If fileExt = "DOC" Or fileExt = "XLS" Then Else Goto NotOFFError 'Create the temporary working directory to hold uploaded office file OFFDir$=TempPath & "OFFDir" & webdoc.UniversalID Mkdir OFFDir$ 'Create the temporary working directory to hold html files htmDir$=TempPath & "htmDir" & webdoc.UniversalID Mkdir htmDir$ 'Extract OFF file Set OFFFile = webdoc.GetAttachment ( fileName ) UFileName$ = OFFDir$ & "" & filename '--Save the file on the server Call OFFFile.ExtractFile ( UFileName$ ) 'Set Up OFF object for processing using different methods for DOC vs XLS Call agentLog.logAction("begin office processing") If fileExt = "DOC" Then 'Format for Word files Set OFF = CreateObject("Word.Application") Call agentLog.logAction("create word object") OFF.Visible = False OFF.Documents.Open UFileName$ Call agentLog.logAction("open" & UFileName$) OFF.Documents(1).Activate OFF.ActiveDocument.WebOptions. OrganizeInFolder = False OFF.ActiveDocument.SaveAs htmDir$ & "" & filename & ".htm", 10 '10 is constant for HTML Filtered OFF.ActiveDocument.Close 0 OFF.Quit 0 Call agentLog.logAction("saved html") Elseif fileExt="XLS" Then 'Format for Excel files Set OFF = CreateObject("Excel.Application") OFF.DisplayAlerts = False Call agentLog.logAction("create Excel object") OFF.Visible = False OFF.Workbooks.Open UFileName$ Call agentLog.logAction("open" & UFileName$) OFF.Workbooks(1).Activate OFF.ActiveWorkbook.WebOptions. OrganizeInFolder = False OFF.ActiveWorkbook.SaveAs htmDir$ & "" & filename & ".htm", 44 ' 44 is constant for HTML OFF.ActiveWorkbook.Close 0 Call agentLog.logAction("saved html") OFF.Quit End If 'Make New Document to hold all the files Dim newDoc As NotesDocument Dim OFFRtitem As NotesRichTextItem Dim htmRtitem As NotesRichTextItem Dim OFFObject As NotesEmbeddedObject Dim htmObject As NotesEmbeddedObject Set newDoc = New NotesDocument( db ) Set OFFRtitem = New NotesRichTextItem( newDoc, "PrintFile" ) Set htmRtitem = New NotesRichTextItem( newDoc, "HTMLFiles" ) 'attach office doc Set OFFObject = OFFRtitem.EmbedObject ( EMBED_ATTACHMENT, "", UFileName$) 'Loop through each of the html files and attach them 'Directory of htm files htmFiles$ = htmDir$ & "*.*" htmFile$=Dir$(htmFiles$, 0) If htmFile$ = "" Then Goto done Do While htmFile$ <> "" htmFileName$ = htmDir$ & "" & htmFile$ 'attach html files Set htmObject = htmRtitem.EmbedObject ( EMBED_ATTACHMENT, "", htmFileName$) Kill htmFileName$ ' remove from filesys after attaching htmFile$ = Dir$() 'increment to the next file Loop 'save the new document newDoc.Form = "Document" newDoc.HTMLFilename = filename & ".htm" newDoc.PrintFilename = filename Call newDoc.Save( True, True ) 'Clean up Set OFF = Nothing Kill UFileName$ 'delete the office file Rmdir(OFFDir$) 'delete the temp htm directory Rmdir(htmDir$) 'delete the temp OFF directory Goto done Uh_Oh: 'there was an error so attempt to send an e-mail to the administrator Print "" Print "<h3>There was an unknown error uploading the file. Please contact the system administrator.</h3>" done: 'there was no error webpath$=Strleft(webdoc.Path_Info(0),".nsf") & ".nsf" Print "<FONT FACE=Arial><h3> The upload process has been completed. </h3>" Print "<FONT FACE=Arial><a href=" & webpath$ & ">Continue</a></FONT><br><br>" 'make a link back to a specific view here completelyDone: 'we're finally done Goto megaDone TempDirError: Mkdir TempPath Resume FinishPathSetup NotOFFError: Print "<FONT FACE=Arial> <h3>Only "".DOC"" or "".XLS"" files can be uploaded. Click the back button on your browser and select another file.</h3></FONT>" Goto megaDone NoFileError: Print "<FONT FACE=Arial><h3> No file was selected for uploading. Click the back button on your browser and select a file.</h3></FONT>" Goto megaDone megaDone: Set OFF = Nothing Call agentLog.close() End Sub

As a side note, there are many more interesting things you can do with Microsoft Office documents through automation, including converting PowerPoint files (which this agent unfortunately does not cover). For more details, go to Microsoft Word -> Visual Basic Editor -> Help for reference.

Do you have comments on this tip? Let us know.

Related information from SearchDomino.com:

  • Tip: Creating PDF documents from Lotus Notes
  • Tip: Exporting email from Lotus Notes to .EML messages
  • Reference Center: Tips and resources on Notes/Domino agents

    This tip was submitted to the SearchDomino.com tip library by member Tim Wynn. Please let others know how useful it is via the rating scale below. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.

    This was first published in August 2006

  • Disclaimer: Our Tips Exchange is a forum for you to share technical advice and expertise with your peers and to learn from other enterprise IT professionals. TechTarget provides the infrastructure to facilitate this sharing of information. However, we cannot guarantee the accuracy or validity of the material submitted. You agree that your use of the Ask The Expert services and your reliance on any questions, answers, information or other materials received through this Web site is at your own risk.