Early vs. Late Binding
1.  Your code will run considerably faster, because it can all be 
compiled up front. With late binding, the code relating to an 
application you declared as an object has to, in effect, be 
compiled as it runs.
2.  Because your code can all be compiled up front, debugging 
is far easier – select Debug + Compile, and the compiler will 
be able to spot syntax errors which would have been missed 
had you used late binding.
3.  You have full access in your project to intellisense (type a 
keyword and a dot to get a popup list of properties and 
methods supported by that keyword, select one to insert it; 
type a keyword and press F1 to launch the Help topic on 
that keyword).
4.  You have full access to the application's object model via 
the Object Browser and VBA Help.
5.  You have access to the application's built-in constants. For 
instance, if you are automating Word from Excel, you can 
use:
Dim objWord As Word.Application  
Set objWord = New Word.Application  
With objWord  
.Visible = True  
.Activate  
.WindowState = wdWindowStateMaximize  
.Documents.Open ("c:\temp\temp.doc")  
End With 
Furthermore, when you type 
.WindowState =
you'll get a pop-up list of the supported constants, and can 
http://word.mvps.org/FAQs/InterDev/EarlyvsLateBinding.htm (2 of 4)10/16/09 5:43 PM
How to convert pdf into powerpoint slides - Library control class:C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
www.rasteredge.com
How to convert pdf into powerpoint slides - Library control class:VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
www.rasteredge.com
Early vs. Late Binding
simply pick “wdWindowStateMaximize” from the list.
If you used late binding, you would need to use:
.WindowState = 1
.. and you would need to know (by looking it up in Word's 
Object Browser) that the value of the constant 
“wdWindowStateMaximize” happens to be 1.
All this makes programming using early binding immeasurably 
easier than using late binding. 
Advantages of Late Binding
1.  The main advantage is that code which uses late binding is 
more certain to be version-independent
If you set a reference in a Word 97 project to “Microsoft 
Excel 8.0 Object Library”, then the project will run OK on a 
machine which has Office 2000 installed. Word 2000 
changes the reference on the fly to the “Microsoft Excel 9.0 
Object Library”.
But as they famously say, 
YMMV. Problems have been 
found in certain circumstances. For instance, if you run a 
Word 97 project containing a reference to the Excel 8.0 
object library on a machine with Office 2000 installed, it will 
run OK, but you may get the occasional “cannot open macro 
storage” error unless you save the project in Word 2000. If 
you do save it in Word 2000, the reference will change to the 
Excel 9.0 object library. So if you use early binding and 
support a mixed environment, it may be safest to create 
separate Word 97 and Word 2000 versions of your addins, 
despite the maintenance overhead. 
2.  The more references your project contains, the larger the file 
http://word.mvps.org/FAQs/InterDev/EarlyvsLateBinding.htm (3 of 4)10/16/09 5:43 PM
Library control class:C# PowerPoint - How to Process PowerPoint
control, developers are able to split a PowerPoint into two or more It enables you to move out useless PowerPoint document pages C# Codes to Sort Slides Order.
www.rasteredge.com
Library control class:VB.NET PowerPoint: Process & Manipulate PPT (.pptx) Slide(s)
split one PPT (.pptx) document file into smaller sub library SDK, this VB.NET PowerPoint processing control & profession imaging controls, PDF document, image
www.rasteredge.com
Early vs. Late Binding
size and the longer it takes to compile.
3.  Some programming environments don't allow you to create 
references to another application.
Summary
Personally, as someone who finds programming difficult at the 
best of times, I would never dream of using late binding – why 
make life harder for yourself than it has to be? But some 
programming geniuses prefer to use late binding, because of the 
peace of mind it gives them regarding version independence – or 
maybe some of them just enjoy the challenge! <g> But you pays 
your money and makes your choice ...
To those unfortunate souls using programming environments in 
which you have to use late binding, all I can say is: Look on the 
bright side – you could have ended up as an Assembly language 
programmer ...
Terms of Use
Disclaimer
Privacy Statement
Contact 
Site MapPage Last Updated: Apr 28, 2007
http://word.mvps.org/FAQs/InterDev/EarlyvsLateBinding.htm (4 of 4)10/16/09 5:43 PM
Library control class:VB.NET PowerPoint: Merge and Split PowerPoint Document(s) with PPT
sample code in VB.NET to finish PowerPoint document splitting &ltsummary> ''' Split a document into 2 sub Note: If you want to see more PDF processing functions
www.rasteredge.com
Library control class:VB.NET PowerPoint: Extract & Collect PPT Slide(s) Using VB Sample
you want to combine these extracted slides into a new please read this VB.NET PowerPoint slide processing & profession imaging controls, PDF document, image to
www.rasteredge.com
Getting help with calling Word's built-in dialogs using VBA (and why doing so can be much more useful than you'd think)
Microsoft Word MVP FAQ Site
Home 
Site Map 
Word:mac 
FAQ 
Tutorials 
Downloads 
Find Help 
Suggestions 
Links 
About Us 
Search
Getting help with calling Word's built-in 
dialogs using VBA (and why doing so can be 
much more useful than you'd think) 
Article contributed by Jonathan West and Dave Rado 
Where to find Help on them 
There are two Help topics in Word VBA Help that are required reading to get you started with 
built-in dialogs: “Displaying built-in Word dialog boxes” and “Built-in dialog box argument 
lists”. Unfortunately, in the latter article, Microsoft listed the arguments you can use but forgot 
to mention what the arguments mean or what values they can take! 
Fortunately, the dialog box arguments are almost identical to the arguments of the commands 
of WordBasic, so if you know one, you can work out the other. Therefore, the WordBasic Help 
file is at present by far the best resource for programmers wanting to use the dialogs. It is an 
absolute must-have.  
Even more fortunately, the WordBasic Help is now available on-line – click here to 
download it
Why use built-in dialogs? 
There are four reasons to use them. 
1. One obvious use is in order to display them to the user. 
2. You can execute a built-in dialog without actually displaying it, thus allowing you to 
execute all of the relevant settings simultaneously; whereas with VBA, each statement 
executes one at a time. As a result, using the wdDialog method can sometimes make 
your code run much faster and use far less memory.  
A good example is wdDialogFormatBordersAndShading. Using this, you can execute all 
your borders and shading arguments with one Execute statement; whereas using “native 
VBA”, you have to set many separate properties one at a time (top border, bottom border 
etc.). As a result, not only will your code run much faster if you execute the built-in dialog, 
but you are far less likely to get “Formatting too complex” errors while your code is 
running. Consider the following, for instance: 
With Dialogs(wdDialogFormatBordersAndShading) 
.ApplyTo = 3 
.Shadow = 0 
.Shading = 0 
.Foreground = 0 
.Background = 0 
.LeftStyle = 0 
.RightStyle = 0 
.TopStyle = 0 
.BottomStyle = 0 
.HorizStyle = 0 
.VertStyle = 0 
.Execute 
End With
All the above properties are executed in one go by the .Execute statement, whereas if 
you use “native VBA” as shown below, each line executes before the next line starts to 
run, and so the macro runs far more slowly and uses far more memory:
With Selection.Tables(1) 
With .Shading 
.Texture = wdTextureNone 
.ForegroundPatternColor = wdColorAutomatic 
.BackgroundPatternColor = wdColorAutomatic 
End With 
.Borders(wdBorderLeft).LineStyle = wdLineStyleNone 
.Borders(wdBorderRight).LineStyle = wdLineStyleNone 
.Borders(wdBorderTop).LineStyle = wdLineStyleNone 
.Borders(wdBorderBottom).LineStyle = wdLineStyleNone 
.Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone 
.Borders(wdBorderVertical).LineStyle = wdLineStyleNone 
.Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone 
http://word.mvps.org/FAQs/MacrosVBA/WordDlgHelp.htm (1 of 2)10/16/09 5:43 PM
Library control class:VB.NET PowerPoint: Use PowerPoint SDK to Create, Load and Save PPT
guide for PPT document, we divide this page into three parts in VB.NET to create an empty PowerPoint file with or local file and get the exact PPT slides number;
www.rasteredge.com
Library control class:VB.NET PowerPoint: Convert & Render PPT into PDF Document
Using this VB.NET PowerPoint to PDF converting demo code below, you can easily convert all slides of source PowerPoint document into a multi-page PDF file.
www.rasteredge.com
Getting help with calling Word's built-in dialogs using VBA (and why doing so can be much more useful than you'd think)
.Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone 
.Borders.Shadow = False 
End With 
3.
A third reason for using the wdDialogs is that in a few cases, it does much of the work for 
you that you would otherwise have to write a lot of code to do – for instance, if you want 
to change the page setup for the current selection, if you use wdDialogPageSetup, and 
set .ApplyPropsTo = 3, the section breaks are inserted for you. Doing the equivalent in 
“native VBA” is much more involved because you have to check whether there is already 
a section break before or after the selection, and whether the selection begins at the start 
of the doc and or ends at the end of the doc. Why write the code to do that in VBA when 
it's already been written in C++ by Microsoft? For instance, the following code snippet 
creates a landscape section at the selection (Chr$(34) is how you specify the inch (") 
symbol in WordBasic): 
With Dialogs(wdDialogFilePageSetup) 
.ApplyPropsTo = 3 
.PageWidth = 11.69 & Chr$(34) 
.PageHeight = 8.27 & Chr$(34) 
.TopMargin = -1.7 & Chr$(34) 
.BottomMargin = 0.81 & Chr$(34) 
.LeftMargin = iLeftMargin & Chr$(34) 
.RightMargin = 0.95 & Chr$(34) 
.Orientation = wdOrientLandscape 
.DifferentFirstPage = False 
.HeaderDistance = 0.28 & Chr$(34) 
.FirstPage = 0 
.OtherPages = 0 
.Execute 
End With 
 
4. You can get and set information that would be difficult or, in some cases, impossible to 
get using “native VBA”, by looking (in code) at the settings of a built-in dialog – without 
having to display the dialog.  
For some very useful examples, see: 
Finding and replacing symbols 
How to change the behaviour of Word's document protection, so users’ formfields 
don't get reset when they unprotect and reprotect 
How to get the column number of the selection (in a document containing snaking, 
or newspaper-style, columns) 
How to retrieve Word's default Documents path or Pictures path setting 
How to assign a Name to a FormField that doesn't already have a Name, using VBA 
Changing the selected (current) printer in Word without changing the system 
default printer 
How to set the default suggested filename to be displayed by the Save As dialog 
the first time a user saves a new document 
How to safely update a document's styles from its template without using the 
Organizer (and how to make the Tools + Templates and Add-ins dialog safe) 
:  
“Gotchas” 
Note that a fair number of the wdDialog arguments simply don't work. For example, the 
Context argument (the “Look in” setting) for the Autotext dialog has no effect, and there are 
many other arguments which don't work. 
There are also well-known bugs with several of the wdDialogs. For example, the 
wdDialogFileOpen dialog won't allow the user to open more than one file at a time, although 
there is a workaround – see: Calling FileOpen dialog in VBA does not allow opening of 
multiple files
But at least with the aid of the WordBasic Help file you can find out what the dialogs are 
meant to do! 
Send all feedback to word@mvps.org  
Top  - Ctrl+Home
Previous - Alt+left arrow
Page Updated: 
http://word.mvps.org/FAQs/MacrosVBA/WordDlgHelp.htm (2 of 2)10/16/09 5:43 PM
Library control class:VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
clip art or screenshot to PowerPoint document slide large amount of robust PPT slides/pages editing powerful & profession imaging controls, PDF document, image
www.rasteredge.com
Library control class:VB.NET PowerPoint: Add Image to PowerPoint Document Slide/Page
to add, insert or delete any certain PowerPoint slide without a multi-page PPT document into 2, 4, 6 powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
How to create a Userform
Microsoft Word MVP FAQ Site
Home 
Site Map 
Word:mac 
FAQ 
Tutorials 
Downloads 
Find Help 
Suggestions 
Links 
About Us 
Search
How to create a Userform
Article contributed by Doug Robbins
This example will step you through the process of creating a template that contains an autonew 
macro which, when you create a new document from the template, will cause a Userform to be 
displayed, into which you can enter some information that you want to appear in the document.
For example, when creating a letter or a fax; when you click on the OK button on the Userform, 
the information that has been entered into it  will be inserted into bookmarks located in the 
document at the places that you want the information to appear.
The example shows how you would deal with two pieces of information that you want to put into 
the document. At pertinent places in the following, comments have been added indicating where 
you would modify the code to deal with more pieces of information.
Step
Comments
1. Create a template.
See: Creating a Template – 
The Basics (Part I) and 
Creating a Template (Part II)
2. Create two bookmarks in your template named 
“Text1” and “Text2”. To create each bookmark, 
select a single space so that when you turn on the 
option to see the bookmarks under 
Tools>Options>View, the bookmarks appear as [] 
rather than |. When you create bookmarks with a 
space selected like this, the text will be inserted 
inside the bookmark, rather than after it.
You can then use a cross reference to the text of the 
bookmark if you want the same information to appear 
in another location.
Add additional bookmarks for 
each piece of data) Use more 
descriptive names for the 
bookmarks if you like as it does 
make it easier to remember 
which is which and what goes 
where
3. Go to the Visual Basic Editor (Tools>Macro>Visual 
Basic Editor)
Alternatively, you can hold down 
the Alt key and press F11
4. With the Template selected in the Project Explorer, 
select UserForm from the Insert menu
A UserForm will appear in the 
right hand pane and the 
Controls toolbox will appear in 
the left hand pane.
If there are no other Userforms 
in the Template, it will by default 
be UserForm1. 
5.
From the Controls toolbox, select the TextBox control 
– ab| and then move the mouse cursor over to the 
UserForm, click and hold the Left mouse button and 
drag the cursor to make the TextBox the desired 
size. Repeat this step for a second TextBox or for as 
many as you require.
By default, the TextBoxes will be 
numbered TextBox1, 
TextBox2 ...TextBoxn.
You can change the names of 
the TextBoxes in the Properties 
window in the left hand pane. If 
you name them the same as the 
Bookmarks that you inserted 
into the template in Step 1, it 
makes it easier
http://word.mvps.org/FAQs/Userforms/CreateAUserForm.htm (1 of 2)10/16/09 5:43 PM
Library control class:C# PowerPoint: C# Guide to Add, Insert and Delete PPT Slide(s)
empty page and insert it into an existing view detailed guide for each PowerPoint slide processing powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
Library control class:C# PowerPoint: C# Codes to Combine & Split PowerPoint Documents
2 sub-documents, if you need to split PowerPoint into 4, 6 &ltsummary> /// Split a document into 2 sub powerful & profession imaging controls, PDF document, tiff
www.rasteredge.com
How to create a Userform
6. Dimension the TextBoxes by selecting and dragging 
as required for the text that you intend to be inserted 
into them 
7.
Add any labels that you want to have on the form to 
assist the user by clicking on the Label control – A in 
the Controls Toolbox and inserting them in the same 
way as for the TextBoxes.
8.
In the Controls Toolbox, click on the 
CommandButton control and insert one in the 
UserForm.
By default, this will be named 
CommandButton1
9.
Right Click on the CommandButton in the UserForm 
and select the View Codeitem from the menu.
10.
Enter the following code between the Private Sub 
CommandButton1_Click() and theEnd Sub
With ActiveDocument 
.Bookmarks("Text1").Range _ 
.InsertBefore TextBox1 
.Bookmarks("Text2").Range _ 
.InsertBefore TextBox2  
End With 
UserForm1.Hide
Repeat the lines beginning with 
.Bookmarks  
for eachbookmark.
Similarly, you can insert the 
same information into a second 
bookmark by inserting a line 
referring to the range of that 
bookmark
11. Close the Visual Basic Editor     
12. From the Tools Menu select Macro, then Macros, 
then with the Template selected in the “Macros in:” 
box, type the name autonew in the “Macro name:” 
box and click the Create button.
13.
Enter the following command in the module screen:
UserForm1.Show
14.
Exit from the Visual Basic Editor and save your 
template.
When you create a new document from the template, the autonew macro opens the user form 
for the user to input data, then when the command button is clicked, the code associated with 
that button inserts each piece of information into the respective bookmark.
This has been restricted to just enough to get you started.  There's lots more that you can do 
with UserForms. If you get stuck, post a question to the microsoft.public.word.vba.userforms 
newsgroup and someone will spring to your rescue.
Send all feedback to word@mvps.org  
Top  - Ctrl+Home
Previous - Alt+left arrow
Page Updated: 
http://word.mvps.org/FAQs/Userforms/CreateAUserForm.htm (2 of 2)10/16/09 5:43 PM
Useful WordBasic commands that have no VBA equivalent
Microsoft Word MVP FAQ Site
Home 
Site Map 
Word:mac 
FAQ 
Tutorials 
Downloads 
Find Help 
Suggestions 
Links 
About Us 
Search
Useful WordBasic commands that have no 
VBA equivalent 
Article contributed by Jonathan West 
When Microsoft released Word 97, a new programming language VBA replaced the 
WordBasic language that had been available in earlier versions of Word. For most things, 
VBA is a much more powerful and flexible programming language than WordBasic, but there 
are a few very useful WordBasic commands which have no direct equivalents in  VBA. 
Fortunately, VBA includes the WordBasic object, which gives access to most of the old 
WordBasic commands. 
SortArray 
This is perhaps the most useful of the commands left behind. It allows you to sort the 
elements of an array using a single line of code. At its simplest, you can use it on a one-
dimensional array as follows. 
Sub SortTest() 
Dim ss(2) As String 
Dim i As Long 
ss(0) = "orange" 
ss(1) = "apple" 
ss(2) = "banana" 
WordBasic.SortArray ss() 
For i = 0 To 
Debug.Print ss(i) 
Next i 
End Sub 
This sorts the array in ascending alphabetical order 
However, you can also sort in descending order, and sort either dimension of a two-dimension 
array. The full list of the SortArray arguments is as follows 
SortArray ArrayName[$]() [, Order] [, From] [, To] [, SortType] [, SortKey] 
ArrayName is the name of the array
Order is 0 for ascending (by default), 1 for descending
From is the first element to sort (0 by default)
To is the last element to sort (by default the last element of the array)
SortType determines whether you are sorting rows or columns. 0 (default) for rows, 1 for 
columns
SortKey is applicable only to two-dimensional arrays, and indicates the row or column 
used as the sort key. It is 0 by default
Note that, unlike most VBA methods, you don't use named arguments with this command; 
thus you can have 
WordBasic.SortArray MailingList$(), 1, 1, 20, 0, 1 
but not 
WordBasic.SortArray ArrayName:=MailingList$(), Order:=1, From:=1, To:=20, _ 
SortType:=0, SortKey:=1 
Also, you cannot miss out arguments if you want to use later ones, thus you 
can have 
http://word.mvps.org/FAQs/MacrosVBA/WordBasicCommands.htm (1 of 4)10/16/09 5:44 PM
Useful WordBasic commands that have no VBA equivalent
WordBasic.SortArray Test(), 0, 0, 2, 0, 1 
but not 
WordBasic.SortArray Test(), 0, , , , 1 
There is one other limitation of the SortArray command. It will sort an array declared as such, 
but it will not sort an array that is contained in a Variant. If you create an array like this: 
Dim vArray as Variant 
vArray = Array("orange", "apple", "banana") 
SortArray will not sort it.  
(Also if you do not declare your array at all, it will be treated as a variant and will not be 
sorted). 
FileNameInfo$() 
This is another very useful function for which there is no direct VBA equivalent. FileNameInfo 
allows you to get just the filename or a fully qualified pathname from a filename given to it. 
The nearest equivalent in VBA are the Name, FullName and Path properties of the Document 
object. 
FileNameInfo is different in that you don't need to have the document open. 
The syntax is 
x = WordBasic.FilenameInfo$(Filename$, FileType) 
where Filename is the name of the file, and FileType is a number which defines the  part of 
the filename you want to return: 
1 - the full pathname, e.g. C:\My Documents\My File.doc" 
2 - the filename only, if the file is in the current folder, otherwise the full pathname 
3 - the filename only 
4 - the filename without the extension 
5 - the path without the filename 
6 - the UNC pathname 
One case where FileNameInfo$ is very useful is to get the pathname of a file which has just 
been selected by the user in the FileOpen dialog. The following code returns the full 
pathname of a file selected by the user. 
With Dialogs(wdDialogFileOpen) 
If .Display Then 
MsgBox WordBasic.FilenameInfo$(.Name, 1) 
Else 
MsgBox "No file selected" 
End If 
End With 
DisableAutoMacros 
If you are running a macro that opens (or creates) several files, the last thing you may want is 
for an AutoOpen (or AutoNew) macro to fire up each time. WordBasic has a means of 
preventing this, which VBA never copied. 
WordBasic.DisableAutoMacros 1   'Disables auto macros 
WordBasic.DisableAutoMacros 0   'Enables auto macros 
This command is also very useful when launching an instance of Word from another 
application, or from VB, when you will generally not want any AutoExec macros to fire. 
ToolsBulletsNumbers 
WordBasic allows you to remove all manually typed numbering from a selection using the old 
Word 2 command: 
WordBasic.ToolsBulletsNumbers Replace:=0, Type:=1, Remove:=1 
This is particularly useful for removing manually typed numbering from Headings in a 
document you have been emailed, prior to applying List Numbering. If you go into Outline 
View, set the Heading Level to the number of levels you need to remove the typed numbering 
from, and run the above line, it will just remove numbering from those Headings and will leave 
the body text alone. Or you can use the following macro to do the same thing: 
Sub RemoveNumbersFromHeadings() 
http://word.mvps.org/FAQs/MacrosVBA/WordBasicCommands.htm (2 of 4)10/16/09 5:44 PM
Useful WordBasic commands that have no VBA equivalent
Dim ViewType As Long, ShowHeadingLevel As Long, MyRange As Range 
Application.ScreenUpdating = False 
'Set Range variable to current selection so it can be returned to at the end 
Set MyRange = Selection.Range 
'Set variable to current View so it can be returned to at the end 
ViewType = ActiveWindow.View.Type 
'Switch to Outline View 
ActiveWindow.View.Type = wdOutlineView 
'Checks the state (using the ID in case the toolbar has been customised) of _ 
all the ShowHeadings buttons on the Outline toolbar; if none are depressed, _ 
then it must be set to ShowAll. Stores result in a variable so that _ 
the same level can be returned to at the end of the macro 
For ShowHeadingLevel = 71 To 77 
If CommandBars.FindControl(ID:=ShowHeadingLevel).State Then 
ShowHeadingLevel = (ShowHeadingLevel - 70) 
Exit For 
End If 
Next ShowHeadingLevel 
'if none of the heading level buttons depressed sets variable to 1 
If ShowHeadingLevel = 78 Then ShowHeadingLevel = 1 
ActiveWindow.View.ShowHeading 3 
ActiveDocument.Select 
WordBasic.ToolsBulletsNumbers Replace:=0, Type:=1, Remove:=1 
If ShowHeadingLevel = 0 Then 
ActiveWindow.View.ShowAllHeadings 
Else 
ActiveWindow.View.ShowHeading ShowHeadingLevel 
End If 
ActiveWindow.View.Type = ViewType 
MyRange.Select 
Set MyRange = Nothing 
Application.ScreenUpdating = False 
End Sub 
 
FileCopy/FileCopyA 
The VBA FileCopy statement will not copy files that are open. However, the WordBasic 
equivalent will (this is what is known as progress!).
Unfortunately, the syntax of WordBasic equivalent is different in Word 97 and Word 2000!
The following works even if the file being copied is open:
If Left$(Application.Version, 1) = "8" Then 
'Word 97 
WordBasic.CopyFile FileName:="c:\OldDirectory\Temp.doc", _ 
Directory:="C:\NewDirectory\Temp.doc" 
Else 
'Word 2000 and above 
WordBasic.CopyFileA FileName:="c:\OldDirectory\Temp.doc", _ 
Directory:="C:\NewDirectory\Temp.doc" 
End If
FileProperties 
If you want to intercept the FileProperties menu command, the only reliable way to do it is to 
use: 
Sub FileProperties() 
'your code here 
WordBasic.FileProperties 
End Sub 
In fact, if you let Word create the code for you, using the method described here, the above 
code will be created. 
SendKeys 
If you want to do a screen capture using VBA, (simulating the PrtScr key), you have to use: 
WordBasic.SendKeys "%{1068}" 
http://word.mvps.org/FAQs/MacrosVBA/WordBasicCommands.htm (3 of 4)10/16/09 5:44 PM
Documents you may be interested
Documents you may be interested