Link to home
Start Free TrialLog in
Avatar of Jon DeVito
Jon DeVito

asked on

Word Macro to "Scale to Fit"

Hi all, I'm looking to add to a current macro the ability to Fit to Page when printing, the option I believe is Scale to Fit. I just can't figure out the coding for the macro to use Scale to Fit, it should fit on one Letter Size page.

Thanks.
Jon
Avatar of GrahamSkan
GrahamSkan
Flag of United Kingdom of Great Britain and Northern Ireland image

ActiveDocument.PrintOut PrintZoomPaperWidth:= 72 * 8.5, PrintZoomPaperHeight:= 72 * 11
 

Where 8.5 and 11 are the size in inches
Avatar of Jon DeVito
Jon DeVito

ASKER

Thanks Graham. I put it in like below. I get an error on the line: With ActiveDocument.PrintOut under the word .PrintOut

Am I doing this wrong? I tried to follow the same format as the rest of the doc.

Thanks!
Sub PrintAL()
'
' PrintAL Macro
'
'
    Selection.WholeStory
    With Selection.ParagraphFormat
        .LeftIndent = InchesToPoints(0)
        .RightIndent = InchesToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceSingle
        .WidowControl = True
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = InchesToPoints(0)
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
        .MirrorIndents = False
        .TextboxTightWrap = wdTightNone
    End With
    With Selection.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = InchesToPoints(0.3)
        .BottomMargin = InchesToPoints(0.2)
        .LeftMargin = InchesToPoints(0.7)
        .RightMargin = InchesToPoints(0.7)
        .Gutter = InchesToPoints(0)
        .HeaderDistance = InchesToPoints(0.5)
        .FooterDistance = InchesToPoints(0.5)
        .PageWidth = InchesToPoints(8.5)
        .PageHeight = InchesToPoints(11)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
    End With
    With ActiveDocument.PrintOut
        .PrintZoomPaperWidth = 72 * 8.5
        .PrintZoomPaperHeight = 72 * 11
    End With
End Sub

Open in new window

I tried it this way also. I dont get an error but the resizing options dont look right to me. I attached a pic of what they look like after I run the macro.

Thanks.
Sub PrintAL()
'
' PrintAL Macro
'
'
    Selection.WholeStory
    With Selection.ParagraphFormat
        .LeftIndent = InchesToPoints(0)
        .RightIndent = InchesToPoints(0)
        .SpaceBefore = 0
        .SpaceBeforeAuto = False
        .SpaceAfter = 0
        .SpaceAfterAuto = False
        .LineSpacingRule = wdLineSpaceSingle
        .WidowControl = True
        .KeepWithNext = False
        .KeepTogether = False
        .PageBreakBefore = False
        .NoLineNumber = False
        .Hyphenation = True
        .FirstLineIndent = InchesToPoints(0)
        .OutlineLevel = wdOutlineLevelBodyText
        .CharacterUnitLeftIndent = 0
        .CharacterUnitRightIndent = 0
        .CharacterUnitFirstLineIndent = 0
        .LineUnitBefore = 0
        .LineUnitAfter = 0
        .MirrorIndents = False
        .TextboxTightWrap = wdTightNone
    End With
    With Selection.PageSetup
        .LineNumbering.Active = False
        .Orientation = wdOrientPortrait
        .TopMargin = InchesToPoints(0.3)
        .BottomMargin = InchesToPoints(0.2)
        .LeftMargin = InchesToPoints(0.7)
        .RightMargin = InchesToPoints(0.7)
        .Gutter = InchesToPoints(0)
        .HeaderDistance = InchesToPoints(0.5)
        .FooterDistance = InchesToPoints(0.5)
        .PageWidth = InchesToPoints(8.5)
        .PageHeight = InchesToPoints(11)
        .FirstPageTray = wdPrinterDefaultBin
        .OtherPagesTray = wdPrinterDefaultBin
        .SectionStart = wdSectionNewPage
        .OddAndEvenPagesHeaderFooter = False
        .DifferentFirstPageHeaderFooter = False
        .VerticalAlignment = wdAlignVerticalTop
        .SuppressEndnotes = False
        .MirrorMargins = False
        .TwoPagesOnOne = False
        .BookFoldPrinting = False
        .BookFoldRevPrinting = False
        .BookFoldPrintingSheets = 1
        .GutterPos = wdGutterPosLeft
    End With
    ActiveDocument.PrintOut PrintZoomPaperWidth:=72 * 8.5, PrintZoomPaperHeight:=72 * 11
End Sub

Open in new window

9-16-2010-4-03-19-PM.jpg
I'm not sure what I don't have a printer model whose driver has that tab on the properties dialogue, so I'm not sure what is the problem is.

I see, however that the PageSetup code has already specified the page size to the one that you need, so there should be no need to resize by changing the scale.
Sorry. The first sentence should read:

I don't have a printer model whose driver has that tab on the properties dialogue, so I'm not sure what is the problem is.
Thanks, I dont know why it still runs onto 2 pages sometimes. The only way I found to fix it is either shrink the font even further or click Print Document On &  check the box for Scale to Fit.
ASKER CERTIFIED SOLUTION
Avatar of GrahamSkan
GrahamSkan
Flag of United Kingdom of Great Britain and Northern Ireland image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Thanks Graham, I will try this one today & let you know.

Thanks.
Jon
Good enough to get it working for this project. Thanks so much.