One way to do this is hold down the Control key and put your mouse over the edge of the "paper" space in Visio. The grip changes to resize shapes so you can modify the drawing size.
Hope that helps. It seems there are many different ways to do this in Visio, but it's hard to use the one that sticks when it comes to printing...
The recommended way of doing this to create a new Template that has the settings you want in the document's "styles".
First, create a new blank drawing.
Then, open the Drawing Explorer (This is on the Developer tab on the ribbon. If don't see the Developer tab on the ribbon, you need to enable it in Options > Customize Ribbon.)
In the Drawing Explorer, expand the Styles node.
Right-click on Normal and select Define Styles
The Define Styles dialog will appear.
Edit the Text, Fill, or Line properties as needed. In this case I illustrate making the default line color red.
Save the diagram as a Template (VST nor VSD) into a folder. Typically I make my folder under c:\users\myusername\Documents\My Visio Templates. Give it a nice name like "My Default Template.VST"
Close the document.
Go to File > Options > Advanced. At the very bottom click File Locations.
Set the Stencils value to C:\Users\myusername\Documents\My Visio Templates
Now from File > New you will see "My Default Template" in the The Template Categories list.
Just click on that template, and now any new documents will have the style
Now when you try to draw a shape, the default line color will be red.
Best Answer
You can resize the font of the text block using automation if the text exceeds the size of the shape. I found that the following works.
Open the shape's shapesheet (Window->Show Shapesheet) and add the user section (Insert->Section->User-defined Cells). Put this formula in the value cell for User.Row_1:
=Min(1,Height/TEXTHEIGHT(TheText,Width)))
After the shape text changes, get the value of the user cell. in c#:
double scale = shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionUser, (short)IVisio.VisRowIndices.visRowUser, (short)IVisio.VisCellIndices.visUserValue).ResultIU;
Then set the font, and the TextMargins (for any that are non-zero) with the following (assuming the normal font size is 12 and the left margin is 4pt.:
shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionCharacter, 0, (short)IVisio.VisCellIndices.visCharacterSize).FormulaU = (scale*12).ToString() + "pt";
shape.get_CellsSRC((short)IVisio.VisSectionIndices.visSectionObject, (short)IVisio.VisRowIndices.visRowText, (short)IVisio.VisCellIndices.visTxtBlkLeftMargin).FormulaU = (scale * 4).ToString() + "pt";