Excel 2007 VBA Programmer’s Reference
This book is aimed squarely at Excel users who want to harness the power of the VBAlanguage in their
Excel applications. At all times, the VBAlanguage is presented in the context of Excel, not just as a gen-
eral application programming language.
The pages that follow have been loosely divided into three sections:
Primer (Chapter 1)
Working with Specific Objects (Chapters 2–27)
Object Model References (Appendices A–C)
The Primer has been written for those who are new to VBAprogramming and the Excel object model. It
introduces the VBAlanguage and the features of the language that are common to all VBAapplications.
It explains the relationship between collections, objects, properties, methods, and events and shows how
to relate these concepts to Excel through its object model. It also shows how to use the Visual Basic
Editor and its multitude of tools, including how to obtain help.
The middle section of the book takes the key objects in Excel and shows, through many practical examples,
how to go about working with those objects. The techniques presented have been developed through the
exchange of ideas of many talented Excel VBAprogrammers over many years and show the best way to
gain access to workbooks, worksheets, charts, ranges, and so on. The emphasis is on efficiency—that is,
how to write code that is readable and easy to maintain and that runs at maximum speed. In addition, the
chapters devoted to accessing external databases detail techniques for accessing data in a range of formats.
The final four chapters of the book address the following advanced issues: linking Excel to the Internet,
writing code for international compatibility, programming the Visual Basic Editor, and how to use the
functions in the Win32 API (Windows 32-bit Application Programming Interface).
Finally, the appendices are a comprehensive reference to the Excel 2007 object model, as well as the
Visual Basic Editor and Office object models. All the objects in the models are presented together with all
their properties, methods, and events. I trust that this book will become a well-thumbed resource that
you can dig into, as needed, to reveal that elusive bit of code that you must have right now.
Version Issues
Previous editions of this book were able to cover all versions of Excel from Excel 97 onward, because the
changes in the Excel object model and user interface were relatively minor. The changes in Excel 2007
have meant that it is no longer possible to do this without filling the book with complicated alternatives.
This book applies to Excel 2007.
What You Need to Use this Book
Nearly everything discussed in this book has examples with it. All the code is written out and there are
plenty of screenshots where they are appropriate. The version of Windows you use is not important. It is
Pdf save form data - C# PDF Field Edit Library: insert, delete, update pdf form field in C#.net, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
acrobat create pdf form; create pdf form
Pdf save form data - VB.NET PDF Field Edit library: insert, delete, update pdf form field in vb.net, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
change tab order in pdf form; best program to create pdf forms
important to have a full installation of Excel and, if you want to try the more advanced chapters involving
communication between Excel and other Office applications, you will need a full installation of Office.
Make sure your installation includes access to the Visual Basic Editor and the VBAHelp files. It is possible
to exclude these items during the installation process.
Note that Chapter 18 requires you to have VB6 installed because it covers the topics of COM Addins.
Chapter 23 requires you to have IIS 5.0, SQLServer 2000, and SQLServer 2005 installed in order to inter-
act with OLAPdata sources.
Conventions Used
This book uses a number of different styles of text and layout in the book, to help differentiate between
different kinds of information. Here are some of the styles and an explanation of what they mean:
Background information, asides, and references appear in text like this.
Important wordsare italicized
Words that appear on the screen, such as menu options, are capitalized—for example, the
All object names, function names, and other code snippets are in this style: SELECT.
Code that is new or important is presented like this:
SELECT CustomerID, ContactName, Phone
FROM Customers
Code that you’ve seen before or has little to do with the matter being discussed, looks like this:
SELECT ProductName FROM Products
In Case of a Crisis...
There are a number of places you can turn to if you encounter a problem. The best source of information on
all aspects of Excel is your peers. You can find them in a number of newsgroups across the Internet. Try
pointing your newsreader to the following site where you will find all of the authors actively participating:
Subscribe to microsoft.public.excel.programmingor any of the groups that appeal to you. You
can submit questions and generally receive answers within an hour or so.
These boxes hold important, not-to-be forgotten, mission-critical details that are
directly relevant to the surrounding text.
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. Append one PDF file to the end of another and save to a single PDF file.
add attachment to pdf form; build pdf forms
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
Merge Microsoft Office Word, Excel and PowerPoint data to PDF form. this PDF file merge function will put the two target PDF together and save as new
pdf form maker; edit pdf form
Stephen Bullen and Rob Bovey maintain very useful web sites, where you will find a great deal of infor-
mation and free downloadable files, at the following addresses:
John Walkenbach maintains another useful site at:
Wrox can be contacted directly at:
www.wrox.com—for downloadable source code and support
http://p2p.wrox.com/list.asp?list=vba_excel—for open Excel VBAdiscussion
Other useful Microsoft information sources can be found at:
www.microsoft.com/office/—for up-to-the-minute news and support
http://msdn.microsoft.com/office/—for developer news and good articles about how to
work with Microsoft products
www.microsoft.com/technet—for Microsoft Knowledge Base articles, security information,
and a bevy of other more admin-related items
We’ve tried, as far as possible, to write this book as though we were sitting down next to each other. We’ve
made a concerted effort to keep it from getting “too heavy” while still maintaining a fairly quick pace. We’d
like to think that we’ve been successful at it, but encourage you to e-mail us and let us know what you
think one way or the other. Constructive criticism is always appreciated, and can only help future versions
of this book. You can contact us either by e-mail (support@wrox.com) or via the Wrox web site.
Seems like there are always some, eh? From the previous edition of this book, we received hundreds of
questions. We have tried to respond to every one of them as best as possible. What we ask is that you
give it your best shot to understand the problem based on the explanations in the book.
If the book fails you, then you can either e-mail Wrox (support@wrox.com) or us personally (greenj@
bigpond.net.auRobBovey@AppsPro.comStephen@oaltd.co.uk). You can also ask questions on the
vba_excel list at http://p2p.wrox.com. Wrox has a dedicated team of support staff and we personally try
(no guarantees!) to answer all the mail that comes to them. For the previous book, we responded to about
98% of the questions asked—but life sometimes becomes demanding enough that we can’t get to them all.
Just realize that the response may take a few days (because we get an awful lot of mail).
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
this RasterEdge XDoc.PDF SDK, you can simply delete a single page from a PDF document using VB.NET or remove any page from a PDF document and save to local
change text size pdf form; change font size pdf form
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
to extract single or multiple pages from adobe PDF file and save into a The portable document format, known as PDF document, is a widely-used form of file
change font size in pdf form field; adding text to a pdf form
Primer in Excel VBA
This chapter is intended for those who are not familiar with Excel and the Excel macro recorder, or
who are inexperienced with programming using the Visual Basic language. If you are already
comfortable with navigating around the features provided by Excel, have used the macro recorder,
and have a working knowledge of Visual Basic and the Visual Basic Editor, you might want to skip
straight to Chapter 2.
If this is not the case, this chapter has been designed to provide you with the information you need
to be able to move on comfortably to the more advanced features presented in the following chap-
ters. Specifically, this chapter covers the following topics:
The Excel macro recorder
User-defined functions
The Excel object model
VBAprogramming concepts
Excel VBAis a programming application that allows you to use Visual Basic code to run the many
features of the Excel package, thereby allowing you to customize your Excel applications. Units of
VBAcode are often referred to as macros. More formal terminology is covered in this chapter, but
you will continue to see the term macro as a general way to refer to any VBAcode.
In your day-to-day use of Excel, if you carry out the same sequence of commands repetitively, you
can save a lot of time and effort by automating those steps using macros. If you are setting up an
application for other users who don’t know much about Excel, you can use macros to create but-
tons and dialog boxes to guide them through your application as well as automate the processes
If you are able to perform an operation manually, you can use the macro recorderto capture that
operation. This is a very quick and easy process and requires no prior knowledge of the VBAlan-
guage. Many Excel users record and run macros and feel no need to learn about VBA.
C# PDF Convert to Tiff SDK: Convert PDF to tiff images in C#.net
Description: Convert to DOCX/TIFF with specified zoom value and save it into stream. Parameters: zoomValue, The magnification of the original PDF page size.
pdf forms save; adding text fields to a pdf
C# Create PDF from Tiff Library to convert tif images to PDF in C#
Description: Convert to PDF and save it on the disk. Parameters: Name, Description, Valid Value. Description: Convert to PDF and save it into stream. Parameters:
changing font size in pdf form; cannot save pdf form
However, the recorded results might not be very flexible, in that the macro can only be used to carry out
one particular task on one particular range of cells. In addition, the recorded macro is likely to run much
more slowly than code written by someone with knowledge of VBA. To set up interactive macros that
can adapt to change and also run quickly, and to take advantage of more advanced features of Excel
such as customized dialog boxes, you need to learn about VBA.
In this chapter, you learn how to use the macro recorder and you see all the ways Excel provides to run
your macros. You see how to use the Visual Basic Editorto examine and change your macros, thus going
beyond the recorder and tapping into the power of the VBAlanguage and the Excel object model.
You can also use VBAto create your own worksheet functions. Excel comes with hundreds of built-in
functions, such as SUMand IF, which you can use in cell formulas. However, if you have a complex cal-
culation that you use frequently and that is not included in the set of standard Excel functions—such as
a tax calculation or a specialized scientific formula—you can write your own user-defined function.
Using the Macro Recorder
Excel’s macro recorder operates very much like the recorder that stores the greeting on your telephone
answering machine. To record a greeting, you first prepare yourself by rehearsing the greeting to ensure
that it says what you want. Then you switch on the recorder and deliver the greeting. When you have
finished, you switch off the recorder. You now have a recording that automatically plays when you leave
a call unanswered.
Recording an Excel macro is very similar. You first rehearse the steps involved and decide at what points
you want to start and stop the recording process. You prepare your spreadsheet, switch on the Excel
recorder, carry out your Excel operations, and switch off the recorder. You now have an automated 
procedure that you and others can reproduce at the press of a button.
Recording Macros
Say you want a macro that types six month names as three-letter abbreviations, Jan to Jun, across the top
of your worksheet, starting in cell B1. I know this is rather a silly macro because you could do this easily
with an AutoFill operation, but this example will serve to show you some important general concepts:
First, think about how you are going to carry out this operation. In this case, it is easy—you
will just type the data across the worksheet. Remember, a more complex macro might need
more rehearsals before you are ready to record it.
Don’t get the impression that we are dismissing the macro recorder. The macro
recorder is one of the most valuable tools available to VBAprogrammers. It is the
fastest way to generate working VBAcode, but you must be prepared to apply your
own knowledge of VBAto edit the recorded macro to obtain flexible and efficient
code. A recurring theme in this book is recording an Excel macro and then showing
how to adapt the recorded code.
Chapter 1: Primer in Excel VBA
C# PDF Convert to Word SDK: Convert PDF to Word library in C#.net
key. Quick to remove watermark and save PDF text, image, table, hyperlink and bookmark to Word without losing format. Powerful components
add fillable fields to pdf; pdf form creator
C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
add fillable fields to pdf online; convert pdf to editable form
Next, think about when you want to start recording. In this case, you should include the selec-
tion of cell B1 in the recording, because you want to always have Jan in B1. If you don’t select B1
at the start, you will record typing Jan into the active cell, which could be anywhere when you
play back the macro.
Next, think about when you want to stop recording. You might first want to include some for-
matting such as making the cells bold and italic, so you should include that in the recording.
Where do you want the active cell to be after the macro runs? Do you want it to be in the same
cell as Jun, or would you rather have the active cell in column Aor column B, ready for your
next input? Assume that you want the active cell to be A2, at the completion of the macro, so
you will select A2 before turning off the recorder.
Now you can set up your screen, ready to record.
In this case, start with an empty worksheet with cell A1 selected. If you can’t see the Developer tab
above the Ribbon, you will need to click the round Microsoft Office button that you can see in the top-
left corner of the Excel screen shown in Figure 1-1. Click Excel Options at the bottom of the dialog box
and select Personalize. Select the checkbox for Show Developer tab in the Ribbon and click OK. Now
you can select the Developer section of the Ribbon and click Record Macro to display the Record Macro
dialog box, shown in Figure 1-1.
Figure 1-1
In the Macro name: box, replace the default entry, such as Macro1, with the name you want for your
macro. The name should start with a letter and contain only letters, numbers, and the underscore charac-
ter, with a maximum length of 255 characters. The macro name must not contain special characters such
as exclamation points (!) or question marks (?), nor should it contain blank spaces. It is also best to use a
short but descriptive name that you will recognize later. You can use the underscore character to sepa-
rate words, but it is easy to just use capitalization to distinguish words.
Chapter 1: Primer in Excel VBA
C# Create PDF from Excel Library to convert xlsx, xls to PDF in C#
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
chrome pdf save form data; adding image to pdf form
C# Create PDF from Word Library to convert docx, doc to PDF in C#.
Description: Convert to PDF/TIFF and save it on the disk. Parameters: Description: Convert to PDF/TIFF and save it into stream. Parameters:
pdf form creation; add email button to pdf form
Call the macro MonthNames1, because you will create another version later.
In the Shortcut key: box, you can type in a single letter. This key can be pressed later, while holding
down the Ctrl key, to run the macro. Use a lowercase m. Alternatively, you can use an uppercase M.
Inthis case, when you later want to run the macro, you need to use the keystroke combination
Ctrl+Shift+M. It is not mandatory to provide a shortcut key; you can run a macro in a number of other
ways, as you will see.
In the Description: box, you can add text that will be added as comments to the macro. These lines will
appear at the top of your macro code. They have no significance to VBA, but provide you and others
with information about the macro. 
All Excel macros are stored in workbooks. You are given a choice regarding where the recorded macro
will be stored. The Store macro in: combo box lists three possibilities. If you choose New Workbook, the
recorder will open a new empty workbook for the macro. Personal Macro Workbook refers to a special
hidden workbook, which is discussed in a moment. Choose This Workbook to store the macro in the cur-
rently active workbook.
When you have filled in the Record Macro dialog box, click the OK button. You will see a new Stop
Recording button appear on the left side of the status bar at the bottom of the screen, as shown in
Figure1-2. You will also notice that the Start Recording button in the Ribbon has been replaced by a
newStop Recording button.
Figure 1-2
You should now click cell B1, type in Jan, and fill in the rest of the cells as shown in Figure 1-2. Then
select B1:G1 and click the Bold and Italic buttons on the Home tab of the Ribbon. Click the A2 cell and
then stop the recorder. You can stop the recorder by clicking the Stop Recording button on the Ribbon or
by clicking the Stop Recording button on the status bar.
Chapter 1: Primer in Excel VBA
You could now save the workbook, but before you do so, you should determine the file type you need
and consider the security issues covered in the next section.
You can’t save the workbook as the default Excel Workbook (*.xlsx) type. This file format does not allow
macros to be included. You can save the workbook as an Excel Macro-Enabled Workbook (*.xlsm) type,
which is in XLM format, or you can save it as an Excel Binary Workbook (*.xlsb) type, which is in a
binary format. Neither of these file types is compatible with previous versions of Excel. Another alterna-
tive is to save the workbook as an Excel 97-2003 Workbook (*.xls) type, which produces a workbook
compatible with Excel versions from Excel 97 through Excel 2003.
Macro Security
To develop macros with minimum interruption, work with Office 2007’s security restrictions. Without
getting into the complications of digitally signing your workbooks, you have a couple of simple options.
Select the Developer tab on the Ribbon and click the Macro Security button. You will see the Trust Center
dialog box, where you can select Macro Settings. Here you can enable all macros. This is not recom-
mended because it leaves you wide open to macro viruses.
Abetter alternative is to nominate a specific directory as a trusted location. Click Trusted Locations to
the left of the Trust Center dialog box. You probably already have a number of trusted locations, includ-
ing your XLSTART directory and templates directories. Use the Add new location button to specify a
suitable directory for storing your workbooks.
You should now save the workbook containing the newly recorded macro into the trusted location. Click
the Microsoft Office button and select Save As. In the Save as type drop-down, select the .xlsm type and
save the workbook in the trusted location as Recorder.xlsm.
The Personal Macro Workbook
If you choose to store your recorded macro in the Personal Macro Workbook, the macro is added to a
special file called Personal.xlsb, which is a hidden file that is saved in your Excel Startup directory
when you close Excel. This means that Personal.xlsbis automatically loaded when you launch Excel
and, therefore, its macros are always available for any other workbook to use. 
If you can’t see the file extensions, such as .xlsm, in the Save As dialog box, you
should open Windows Explorer, click the Tools menu, and choose Folder Options.
Inthe View tab, remove the check against Hide extensions for known file types.
It is important to remember to stop the recorder. If you leave the recorder on and try
to run the recorded macro, you can go into a loop where the macro runs itself over
and over again. If this does happen to you, or any other error occurs while testing
your macros, hold down the Ctrl key and press the Break key to interrupt the macro.
You can then end the macro or go into debug mode to trace errors. You can also inter-
rupt a macro with the Esc key, but it is not as effective as Ctrl+Break for a macro that
is pausing for input.
Chapter 1: Primer in Excel VBA
If Personal.xlsbdoes not already exist, the recorder will create it for you. You can use the Unhide but-
ton on the View tab of the Ribbon to see this workbook in the Excel window, but it is seldom necessary
or desirable to do this because you can examine and modify the Personal.xlsbmacros in the Visual
Basic Editor window. 
An exception where you might want to make Personal.xlsbvisible is if you need to store data in its
worksheets. You can hide it again, after adding the data, with the Hide button on the View tab of the
Ribbon. If you are creating a general-purpose utility macro, which you want to be able to use with any
workbook, store it in Personal.xlsb. If the macro relates to just the application in the current work-
book, store the macro with the application.
Running Macros
To run the macro, either use another worksheet in the Recorder.xlsmworkbook or open a new empty
workbook, leaving Recorder.xlsmopen in memory. You can only run macros that are in open work-
books, but they can be run from within any other open workbook.
You can run the macro by pressing Ctrl+M, the shortcut you assigned at the start of the recording pro-
cess. You can also run the macro by clicking the Macros button in the View tab of the Ribbon or by 
clicking the Macros button in the Developer tab of the Ribbon. Both buttons open the dialog box shown
in Figure 1-3. You can run the macro by double-clicking the macro name, or by selecting the macro name
and clicking Run.
Figure 1-3
The same dialog box can be opened by pressing Alt+F8.
Shortcut Keys
You can change the shortcut key assigned to a macro using the Macro dialog box shown in Figure 1-3.
Select the macro name and click Options. This opens the dialog box shown in Figure 1-4.
Chapter 1: Primer in Excel VBA
Figure 1-4
It is possible to assign the same shortcut key to more than one macro in the same workbook using this
dialog box (although the dialog box that appears when you start the macro recorder will not let you
assign a shortcut that is already in use).
Shortcuts are appropriate for macros that you use frequently, especially if you prefer to keep your hands
on the keyboard. It is worth memorizing the shortcuts so you won’t forget them if you use them regularly.
Shortcuts are notappropriate for macros that are run infrequently or are intended to make life easier for
less experienced users of your application. It is better to assign meaningful names to those macros and
run them from the Macro dialog box. Alternatively, they can be run from buttons that you add to the
worksheet. You learn how to do this shortly.
Absolute and Relative Recording
When you run MonthNames1, the macro returns to the same cells you selected while typing in the
monthnames. It doesn’t matter which cell is active when you start; if the macro contains the command
to select cell B1, that is what it selects. The macro selects B1 because you recorded in absolute record
mode. The alternative, relative record mode, remembers the position of the active cell relative to its pre-
vious position. If you have cell A10 selected, turn on the recorder, and go on to select B10, the recorder
notes that you moved one cell to the right, rather than noting that you selected cell B10.
Record a second macro called MonthNames2. There will be three differences in this macro compared
with the previous one:
Click the Use Relative References button on the Developer tab of the Ribbon. You can do this
before you start recording or while you are recording.
Do not select the Jan cell before typing. You want your recorded macro to type Jan into the
active cell when you run the macro. 
Finish by selecting the cell under Jan, rather than A2, just before turning off the recorder.
It is also quite likely that two different workbooks could contain macros with the
same shortcut key assigned. If this happens, which macro runs when you use the
shortcut? The macro that comes first alphabetically.
Chapter 1: Primer in Excel VBA
Documents you may be interested
Documents you may be interested