/*----------------------------------------------------------------------------*/ /* */ /* Copyright (c) 1995, 2004 IBM Corporation. All rights reserved. */ /* Copyright (c) 2005-2021 Rexx Language Association. All rights reserved. */ /* */ /* This program and the accompanying materials are made available under */ /* the terms of the Common Public License v1.0 which accompanies this */ /* distribution. A copy is also available at the following address: */ /* https://www.oorexx.org/license.html */ /* */ /* Redistribution and use in source and binary forms, with or */ /* without modification, are permitted provided that the following */ /* conditions are met: */ /* */ /* Redistributions of source code must retain the above copyright */ /* notice, this list of conditions and the following disclaimer. */ /* Redistributions in binary form must reproduce the above copyright */ /* notice, this list of conditions and the following disclaimer in */ /* the documentation and/or other materials provided with the distribution. */ /* */ /* Neither the name of Rexx Language Association nor the names */ /* of its contributors may be used to endorse or promote products */ /* derived from this software without specific prior written permission. */ /* */ /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */ /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */ /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */ /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT */ /* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, */ /* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED */ /* TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */ /* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY */ /* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */ /* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS */ /* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* */ /*----------------------------------------------------------------------------*/ /**********************************************************************/ /* */ /* SAMP08.REX: OLE Automation with Open Object REXX - Sample 8 */ /* */ /* Create a Word document, enter some text, save it. Load it again */ /* and modify it. */ /* */ /**********************************************************************/ /* get a Word application object */ Word = .OLEObject~New("Word.Application") /* set Word visible to see what happens */ Word~Visible = .TRUE /* new document */ Document = Word~Documents~Add /* get the selection object */ Selection = Word~Selection /* type two lines of text and new paragraph */ Selection~TypeText("This is a text sent to MS Word with the Open Object Rexx OLE interface") Selection~TypeParagraph Selection~TypeText("This is a text in a new line") /* select all */ Selection~WholeStory /* get the font object */ Font = Selection~Font /* change the font size and behavior */ Font~Name="Arial" Font~Size="12" Font~Bold = .TRUE Font~Italic = .TRUE /* get the environment variable TEMP and create filename to save */ TempDir = VALUE( "TEMP",,ENVIRONMENT) -- use ".doc" instead of ".docx" to allow older Word apps to work: FileName = TempDir || "\" || "WordCreatedByRexx.doc" /* "save as..." and close Word */ Document~SaveAs(FileName) Word~Quit say "Created" FileName". Press enter to continue" pull /* get a Word application object */ Word = .OLEObject~New("Word.Application") /* set word visible to see what happens */ Word~Visible = .TRUE /* get the documents object and open a file */ Documents = Word~Documents Documents~Open(FileName) /* get the selection object and go to end of document */ Selection = Word~Selection Selection~EndKey("6") /* add a paragraph */ Selection~TypeParagraph /* get active document object */ ActiveDocument = Word~ActiveDocument /* invoke print preview */ ActiveDocument~PrintPreview /* get active window object */ ActiveWindow = Word~ActiveWindow /* change zoom percentage */ ActiveWindow~ActivePane~View~Zoom~Percentage = "200" /* wait a little bit */ say "Showing Print Preview with 200%. Press enter to continue." pull /* change zoom percentage */ ActiveWindow~ActivePane~View~Zoom~Percentage = "100" /* wait a little bit */ call syssleep 2 /* close print preview */ ActiveDocument~ClosePrintPreview /* add a paragraph */ Selection~TypeParagraph /* add a table */ ActiveDocument~Tables~Add(Selection~Range,4,5) /* autoformat table to color */ Selection~Tables(1)~AutoFormat(9) /* fill table */ header = .array~of("Year", "January", "February", "March", "April") do i over header Selection~TypeText(i) Selection~MoveRight end do i=2000 to 2002 Selection~MoveRight(12) Selection~TypeText(i) Selection~MoveRight do 4 Selection~TypeText(random(31)) Selection~MoveRight end end say "Done. Press enter to quit." pull Word~Quit(.false)