HOWTO: Have a VB Program Change a Word Document's Page Layout

ID: Q115782


The information in this article applies to:
  • Microsoft Visual Basic Standard and Professional Editions for Windows, version 3.0
  • Microsoft Word for Windows, version 6.0


SUMMARY

The stretch setting of the SizeMode property re-sizes an OLE server's image to best fit the dimensions of the MSOLE2.VBX control. OLE servers, such as Word for Windows, are responsible for the display of the image inside an OLE container. OLE servers will create a display based on a unit defined by the server. For example, the display of a Word for Windows version 6.0 document is based on the Page Layout dimensions of the document and the amount of vertical text being displayed. This article gives two techniques you can use to alter the appearance of a Word object in the OLE control.


MORE INFORMATION

The ChangePageSize Sub procedure defined in the following example is a generic routine that accepts three parameters (the OLE control, a string for page height, and a string for page width). The ChangePageSize Sub procedure redefines the page height and width based on the parameters passed to it. Both strings (page height and page width) must include a unit of measure. The following example uses inches as the unit of measure. The ChangePageSize Sub procedure expects the second and third parameters to represent the page height and page width.

Steps to Create Example Program for Changing a Page Size

  1. Start a new project in Visual Basic. Form1 is created by default.


  2. Add a command button (Command1) to Form1.


  3. Create a control array of three Command1 buttons. From the Edit menu, choose Copy. Then from the Edit menu, choose Paste. You will be asked if you want to create a control array of Command1 buttons. Choose the Yes button. Continue this process for a total of three Command1 buttons. Change the caption on the first button to 100%, the caption on the second button to 75%, and the caption on the third button to 50%.


  4. Add the following code to Command1_Click (Index As Integer) event procedure:


  5. 
          Sub Command1_Click (Index As Integer)
             ' OLE1 is the name of the OLE control.
             Select Case Index
                Case 0 '100%
                   Call ChangePageSize(OLE1, "", "")
                Case 1 '75%
                   ' Enter the following two lines as one, single line:
                   Call ChangePageSize(OLE1, CStr(11 * .75) & """",
                      CStr(8.5 * .75) & """")
                Case 2 '50%
                   ' Enter the following two lines as one, single line:
                   Call ChangePageSize(OLE1, CStr(11 * .5) & """",
                      CStr(8.5 * .5) & """")
             End Select
          End Sub 
  6. Add the following Sub procedure to the General Declarations section of Form1:


  7. 
          ' Enter the following two lines as one, single line:
    
          Sub ChangePageSize (cOLE As OLE, strPageHeight As String,
             strPageWidth As String)
             ' Declare the variables to be used:
             Dim WB As Object
             ' Initialize Page Definition variables for default:
             If strPageHeight = "" Then strPageHeight = "11.0"""
             If strPageWidth = "" Then strPageWidth = "8.5"""
             ' Activate OLE container:
             cOLE.Action = 7
             ' Use WB as an Alias for the WordBasic Object:
             Set WB = CreateObject("Word.Basic")
             ' Use OLE Automation to define the embedded documents page def.
             ' Change width and height, ,, will leave settings as is.
             WB.FilePageSetup , , , , , , , strPageWidth, strPageHeight
             ' If object is linked, save, close, and activate Form:
             If cOLE.SourceDoc <> "" Then
                WB.FileSave
                WB.FileClose
                AppActivate Me.Caption
             End If
          End Sub 
  8. Add an MSOLE2.VBX control to Form1 and select the Create from File option. Then choose the Browse button and find the desired document to load. Next select the Display as Icon option, and choose the OK button.


  9. Run the sample. Click the 50% button to see the document displayed at 50% of the page size. Then click the 75% button to see the document displayed at 75% of the page size. Finally, click the 100% button to see the document displayed at 100% of the page size.


Steps to add to the Example Program for Changing the Margin Size

The ChangeMargins Sub procedure listed in the following example is a generic routine that excepts five parameters (the OLE control and four string type parameters for the four margin settings).

The ChangeMargins Sub procedure redefines the page margins (top, bottom, left, and right) based on the parameters passed to it. All four of the margin strings must include a unit of measure, which for the following example is inches. In the ChangeMargins Sub procedure, the second, third, fourth and fifth parameters set the margins. The second parameter represents the value for the top margin, the third represents the value for the bottom margin, the fourth represents the value for the left margin, and the fifth represents the value for the right margin.
  1. Add a command button (Command2) to Form1.


  2. Create a control array of four Command2 buttons. From the Edit menu, choose Copy. Then from the edit menu, choose Paste. When asked if you want to create a control array of Command1 buttons, choose the Yes button. Continue this process for a total of four Command2 buttons. Change the first button's caption to Default, the second button's caption to No Margins, the third button's caption to 1/2 Inch, and the fourth button's caption to 1 Inch.


  3. Add the following code to the Command2_Click (Index As Integer) event procedure:


  4. 
          Sub Command2_Click (Index As Integer)
             Dim strTop As String, sBottom As String
             Dim sRight As String, sLeft As String
    
             Select Case Index
                Case 0 'Default Settings:
                   ' Do nothing
                Case 1 ' No Margins:
                   strTop = "0.00" & """"
                   sBottom = "0.00" & """"
                   sRight = "0.00" & """"
                   sLeft = "0.00" & """"
                Case 2 ' 1/2 Inch all the way around:
                   strTop = "0.5" & """"
                   sBottom = "0.5" & """"
                   sRight = "0.5" & """"
                   sLeft = "0.5" & """"
                Case 3 ' 1 Inch all the way around:
                   strTop = "1.00" & """"
                   sBottom = "1.00" & """"
                   sRight = "1.00" & """"
                   sLeft = "1.00" & """"
             End Select
             Call ChangeMargins(OLE1, strTop, sBottom, sRight, sLeft)
          End Sub 
  5. Add the following Sub procedure to the General Declarations section of Form1:


  6. 
          ' Enter the following three lines as one, single line:
    
          Sub ChangeMargins (cOLE As OLE, strTopMargin As String,
             strBottomMargin As String, strLeftMargin As String,
             strRightMargin As String)
             ' Declare the variables to be used:
             Dim WB As Object
    
             ' Initialize Page Definition variables and defaults:
             If strTopMargin = "" Then strTopMargin = "1.0"""
             If strBottomMargin = "" Then strBottomMargin = "1.0"""
             If strLefMargin = "" Then strLefMargin = "0.5"""
             If strRightMargin = "" Then strRightMargin = "0.5"""
    
             cOLE.Action = 7  ' Activate OLE container.
             ' Use WB as an Alias for the WordBasic Object:
             Set WB = CreateObject("Word.Basic")
    
             ' Use OLE Automation to define the embedded documents page def.
             ' Enter the following two lines as one, single line:
             WB.FilePageSetup , , strTopMargin, strBottomMargin,
                strLefMargin, strRightMargin
             If cOLE.SourceDoc <> "" Then
                WB.FileSave
                WB.FileClose
                AppActivate Me.Caption
             End If
          End Sub 
  7. Press the F5 key to run the application. Click the 1 Inch button to see the document displayed with a one-inch margin. Click the 1/2 Inch button to see the document displayed with a one-half-inch margin. Click the No Margins button to see the document displayed with no margin. Click the Default button to use the Microsoft Word default margin setting.


  8. You can use these techniques to produce a zoom or PagePreview effect and control the effect within your Visual Basic program.

Additional query words: OLE Automation OA OLE2

Keywords : kbmacro kbVBp300 kbDSupport IAPOLE
Version : WINDOWS:3.0,6.0
Platform : WINDOWS
Issue type : kbhowto


Last Reviewed: October 14, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.