VBScript Scripting Techniques > OLE Automation > WordPerfect
|
Corel WordPerfect Office Suites come with their own macro scripting language.
However, it is possible to use VBScript to automate WordPerfect through OLE.
The following code demonstrates some of WordPerfect's OLE automation capabilities.
PublishPDF Use Corel WordPerfect to convert WP documents to PDF |
|
---|---|
VBScript Code: | |
Option Explicit Dim blnExitWP, colItems, strMsg, strPDFDoc, strWPDoc Dim objFSO, objItem, objWMIService, objWP strMsg = "" ' Open a FileSystem Object Set objFSO = CreateObject( "Scripting.FileSystemObject" ) ' Parse the command line arguments With WScript.Arguments If .Named.Count > 0 Then Syntax Select Case .Unnamed.Count Case 1 strWPDoc = .Unnamed(0) ' No PDF file name specified, so we'll take the location and ' file name of the WordPerfect document and append a PDF extension strPDFDoc = objFSO.BuildPath( objFSO.GetParentFolderName( strWPDoc ), _ objFSO.GetBaseName( strWPDoc ) & ".pdf" ) Case 2 strWPDoc = .Unnamed(0) strPDFDoc = .Unnamed(1) Case Else Syntax End Select End With ' Check if the WordPerfect file exists If Not objFSO.FileExists( strWPDoc ) Then strMsg = "ERROR: File """ & strWPDoc & """ not found" & vbCrLf & vbCrLf Syntax End If ' Check if WordPerfect is already active by ' searching for a process named WPWIN**.EXE blnExitWP = True Set objWMIService = GetObject( "winmgmts://./root/cimv2" ) Set colItems = objWMIService.ExecQuery( "SELECT * FROM Win32_Process" ) For Each objItem In colItems If Left( UCase( objItem.Name ), 5 ) = "WPWIN" And _ Right( UCase( objItem.Name ), 4 ) = ".EXE" And _ Len( objItem.Name ) < 12 Then blnExitWP = False Next Set objWMIService = Nothing ' Create a new WP OLE Automation object Set objWP = CreateObject( "WordPerfect.PerfectScript" ) With objWP ' Open the specified document .FileOpen( strWPDoc ) ' Publish to PDF .PdfDlg( strPDFDoc ) ' Close the document .Close ' Close WordPerfect unless it was already active If blnExitWP Then .ExitWordPerfect End With ' Release the objects Set objFSO = Nothing Set objWP = Nothing Sub Syntax( ) strMsg = strMsg & vbCrLf _ & WScript.ScriptName & ", Version 1.00" & vbCrLf _ & "Convert a WordPerfect document to Adobe PDF" & vbCrLf & vbCrLf _ & "Usage: " & UCase( WScript.ScriptName ) _ & " wpdoc_filename [ pdf_filename ]" & vbCrLf & vbCrLf _ & "Where: ""wpdoc_filename"" is the WP file to be converted" _ & vbCrLf _ & " ""pdf_filename"" is the name for the PDF file" _ & vbCrLf _ & " " _ & "(default is name of WP file with .PDF extension)" _ & vbCrLf & vbCrLf _ & "Written by Rob van der Woude" & vbCrLf _ & "http://www.robvanderwoude.com" WScript.Echo strMsg WScript.Quit(1) End Sub |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | Corel WordPerfect |
Script Engine: | any |
Summarized: | Works in any Windows version, as long as Corel WordPerfect is installed. Requires a WordPerfect version that has "Publish To", "PDF" menu entries (tested in Corel WordPerfect 12). |
[Back to the top of this page] | |
SaveAs Use Corel WordPerfect to convert WP documents to HTML |
|
VBScript Code: | |
WP2HTML "C:\Documents and Settings\MyUserID\My Documents\resume.wpd" Sub WP2HTML( myFile ) ' This subroutine opens a WordPerfect document, ' then saves it as HTML, and closes WordPerfect. ' If the HTML file exists, the subroutine will ' prompt for overwrite. ' If WordPerfect was already active, the subroutine ' will prompt the user to save the changes in other ' documents. ' ' Written by Rob van der Woude ' http://www.robvanderwoude.com ' Standard housekeeping Dim objFSO, objWP, objWPFile, strHTMLFile, strWPFile Const WordPerfect_6_7_8_FileOpen_Format = 4 Const HTML_FileSave_ExportType = 226 Const No_FileSave_Overwrite = 0 Const Prompt_FileSave_Overwrite = 2 Const Yes_FileSave_Overwrite = 1 ' Create a File System object Set objFSO = CreateObject( "Scripting.FileSystemObject" ) ' Create a WordPerfect OLE Automation object Set objWP = CreateObject( "WordPerfect.PerfectScript" ) With objWP ' Check if the WordPerfect file exists If objFSO.FileExists( myFile ) Then Set objWPFile = objFSO.GetFile( myFile ) Else WScript.Echo "FILE OPEN ERROR: The file does not exist" & vbCrLf ' Close WordPerfect .ExitWordPerfect Exit Sub End If strWPFile = objWPFile.Path strHTMLFile = objFSO.BuildPath( objWPFile.ParentFolder, _ objFSO.GetBaseName( objWPFile ) & ".html" ) ' Maximize the window .AppMaximize ' Open the document On Error Resume Next .FileOpen strWPFile, WordPerfect_6_7_8_FileOpen_Format If Err Then WScript.Echo "FILE OPEN ERROR: " & Err.Number & vbCrLf _ & Err.Description & vbCrLf Err.Clear ' Close WordPerfect .ExitWordPerfect Exit Sub End If ' Save the document as HTML file .FileSave strHTMLFile, HTML_FileSave_ExportType, Prompt_FileSave_Overwrite If Err Then WScript.Echo "FILE SAVE AS ERROR: " & Err.Number & vbCrLf _ & Err.Description & vbCrLf Err.Clear End If ' Close WordPerfect .ExitWordPerfect If Err Then WScript.Echo "PROGRAM CLOSE ERROR: " & Err.Number & vbCrLf _ & Err.Description & vbCrLf Err.Clear End If On Error Goto 0 End With ' Release the object Set objWP = Nothing End Sub |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | Corel WordPerfect |
Script Engine: | any |
Summarized: | Works in any Windows version, as long as Corel WordPerfect is installed. |
[Back to the top of this page] | |
Type Write and format text |
|
VBScript Code: | |
' This script opens WordPerfect, creates a new document, ' types some text and changes text attributes on selections. ' ' Tested with Corel WordPerfect 12 only. ' ' Based on the article "The Cutting Edge: Using OLE ' Automation to Control WordPerfect" by Gordon McComb ' gmccomb.com/vault/edge/ole.html ' ' Written by Rob van der Woude ' http://www.robvanderwoude.com Option Explicit Dim objWP ' Create a new WP OLE Automation object Set objWP = CreateObject( "WordPerfect.PerfectScript" ) With objWP ' Maximize the window .AppMaximize ' Open a new document; otherwise the ' currently active document is used! .FileNew ' Set the new default font and size .Font = "Times New Roman" .FontSize = 200 ' 200 = 12pt ' Type some text, and center the line .Center .Type "This is normal text, 12pt Times New Roman, centered" & vbLf & vbLf ' Repeat, but select and format the text .Center .Type "This is Bold, Extra Large text, centered" & vbLf .MoveUp .SelectLineEnd .MoveLeft .FontExtraLargeToggle .BoldKey .SelectOff .MoveRight .Type vbLf ' Repeat, this time without centering .Type "This is normal text, left aligned, 18pt Arial" & vbLf .MoveUp .SelectLineEnd .MoveLeft .FontSize = 300 ' 300 = 18pt .Font = "Arial" .SelectOff .MoveRight .Type vbLf ' Once more .Type "This is 8pt Comic Sans MS, italics" & vbLf .MoveUp .SelectLineEnd .MoveLeft .Font = "Comic Sans MS" .FontSize = 133 ' 133 = 8pt .FontItalicToggle .SelectOff .MoveRight ' And again .Type vbLf & "Normal text, underlined" & vbLf .MoveUp .SelectLineEnd .MoveLeft .FontUnderlineToggle .SelectOff .MoveRight .Type vbLf ' Open the File Save As dialog and quit .FileSaveAsDlg .Quit End With ' Release the object Set objWP = Nothing WScript.Echo "Done." |
|
Requirements: | |
Windows version: | any |
Network: | any |
Client software: | Corel WordPerfect |
Script Engine: | any (except of course the WScript.Echo command at the end) |
Summarized: | Works in any Windows version, as long as Corel WordPerfect is installed. |
[Back to the top of this page] |
Note the use of vbLf
instead of vbCrLf
when typing text in WordPerfect.
vbCrLf
would result in a space before each linefeed.
These typing demo scripts can be downloaded here.
The downloadable versions also contain other file filter constants.
page last modified: 2022-10-25; loaded in 0.0018 seconds