ByVal ConnectMode As Add-InDesignerObjects.ext_ConnectMode, _
ByVal Add-InInst As Object, custom() As Variant)
‘ Set the Add-In instance’s Object property to be this class,
‘ providing access to the Com Add-In’s object model from within VBA.
‘ Note that we don’t use Set here!
Add-InInst.object = Me
End Sub
‘ Property to return a reference to our Simple class, providing access
‘ from VBA:
‘vaSeq = Application.ComAdd-Ins(“Excel2007ProgRef.ComAdd-In”).Object _
‘        .SimpleFuncs.Sequence(...)
Public Property Get SimpleFuncs() As Simple
Set SimpleFuncs = New Simple
End Property
Save the project and use File➪Make Excel2007ProgRef.dll to build the DLL. Start Access 2007 with a
blank database, create a new form, add a list box, and copy the following code into the form’s code 
Private Sub Form_Load()
Dim vaSequence As Variant
Dim i As Integer
‘ Use the COMAdd-In to get the sequence
vaSequence = Application.COMAddIns(“Excel2007ProgRef.AccessAddIn”) _
.Object.SimpleFuncs.Sequence(5, 10, 2)
‘ Add the sequence to the list box
List0.RowSourceType = “Value list”
For i = LBound(vaSequence) To UBound(vaSequence)
List0.AddItem vaSequence(i)
End Sub
Save the form and run it to show the COM Add-In at work (see Figure 18-3).
Figure 18-3
Chapter 18: Automation Add-Ins and COM Add-Ins
Pdf add signature field - C# PDF Field Edit Library: insert, delete, update pdf form field in, ASP.NET, MVC, Ajax, WPF
Online C# Tutorial to Insert, Delete and Update Fields in PDF Document
change font size in pdf form; add text field pdf
Pdf add signature field - VB.NET PDF Field Edit library: insert, delete, update pdf form field in, ASP.NET, MVC, Ajax, WPF
How to Insert, Delete and Update Fields in PDF Document with VB.NET Demo Code
convert word to editable pdf form; best way to create pdf forms
In Excel 2007, Microsoft has provided a number of ways to extend Excel using Add-Ins written in Visual
Basic, or any other language that can produce Component Object Model (COM) DLLs, including .NET:
With Automation Add-Ins, you can add new functions for use in Excel worksheets and VBA
The performance of Automation and COM Add-Ins is typically much faster than their VBA
With COM Add-Ins, you can add new menu items and respond to Excel’s events. You can also
use these to create Add-Ins that work across multiple Office applications and the VBE.
The COM Add-In can provide programmatic access to the behavior of the Add-In, such as
enabling or disabling its actions, or using its functions.
In Excel 2007, COM Add-Ins can be used for application-level customization of the Ribbon or to
create custom task panes.
The Custom Task Pane extensibility model can be used to create multiple CTPs within a single
COM Add-In and expose the CTP-creation features to VBA.
The RibbonX extensibility model forces you to declare your UI customizations as soon as the
COM Add-In is loaded, preventing you from exposing RibbonX to VBAor creating highly
dynamic interfaces.
Chapter 18: Automation Add-Ins and COM Add-Ins
C# PDF Digital Signature Library: add, remove, update PDF digital
things. Add a signature or an empty signature field in any PDF file page. Search unsigned signature field in PDF document. Prepare
add image field to pdf form; create a pdf form to fill out
VB.NET PDF Digital Signature Library: add, remove, update PDF
things. Add a signature or an empty signature field in any PDF file page. Search unsigned signature field in PDF document. Prepare
create a form in pdf; change font in pdf form field
C# PDF insert image Library: insert images into PDF in, ASP
field. Access to freeware download and online C#.NET class source code. How to insert and add image, picture, digital photo, scanned signature or logo into PDF
create a fillable pdf form; add attachment to pdf form
VB.NET PDF insert image library: insert images into PDF in
Import graphic picture, digital photo, signature and logo into PDF Add images to any selected PDF page in VB.NET. Insert images into PDF form field in VB.NET.
adding image to pdf form; create a fillable pdf form in word
Interacting with Other
Office Applications
The Office application programs Excel, Word, PowerPoint, Outlook, and Access all use the same
VBAlanguage. Once you understand VBAsyntax in Excel, you know how to use VBAin all the
other applications. Where these applications differ is in their object models.
One of the really nice things about the common VBAlanguage is that all the Office applications
are able to expose their objects to each other, and you can program interaction between all of the
applications from any one of them. To work with Word objects from Excel, for example, you only
need to establish a link to Word, and then you have access to its objects as if you were program-
ming with VBAin Word itself.
This chapter explains how to create the link in a number of different ways, and presents some sim-
ple examples of programming the other application. In all cases, the code is written in Excel VBA,
but it could easily be modified for any other Office application. The code is equally applicable to
products outside Office that support the VBAlanguage. These include other Microsoft products
such as Visual Basic and SQLServer. There is also a growing list of non-Microsoft products that
can be programmed in the same way.
Establishing the Connection
Once you have made a connection with an Office application, its objects are exposed for automa-
tion through a type library. There are two ways to establish such a connection: latebindingand
earlybinding. In either case, you establish the connection by creating an object variable that refers
to the target application, or a specific object in the target application. You can then proceed to use
the properties and methods of the object referred to by the object variable.
In late binding, you create an object that refers to the Office application before you make a link 
to the Office application’s type library. In earlier versions of the Office applications, it was neces-
sary to use late binding, and you will still see it used because it has some advantages over early
How to C#: Basic SDK Concept of XDoc.PDF for .NET
You may add PDF document protection functionality into your C# program. To be specific, you can edit PDF password and digital signature, and set PDF file
change pdf to fillable form; build pdf forms
VB.NET PDF: Basic SDK Concept of XDoc.PDF
You may add PDF document protection functionality into your VB.NET program. To be specific, you can edit PDF password and digital signature, and set PDF file
create a pdf form in word; convert word doc to pdf with editable fields
binding. One advantage is that you can write code that can detect the presence or absence of the
required type library on the PC running your code, and link to different versions of applications based
on decisions made as the code executes.
Late binding is very useful when you have to run an application under different versions of Office.
Office happily upgrades an application’s early boundlinks when those links are to an earlier version.
Unfortunately, the opposite is not true. An application linked to a later version of Office than the version
it is running under gives errors. The problem is compounded if users can save the changes to the links in
applications on a network. Because late binding does not create the links until execution time, the links
are always to the version it is running under.
The disadvantage of late binding is that the type library for the target application is not accessed when
you are writing your code. Therefore, you get no help information regarding the application, you cannot
reference the intrinsic constants in the application, and when the code is compiled, the references to the
target application may not be correct, because they cannot be checked. The links are only fully resolved
when you try to execute the code, and this takes time. It is also possible that coding errors may be
detected at this point that cause your program to fail.
Early binding is supported by all the Office applications, from Office 97 onward. Code that uses early
binding executes faster than code using late binding, because the target application’s type library is pre-
sent when you write your code. Therefore, more syntax and type checking can be performed, and more
linkage details can be established, before the code executes.
It is also easier to write code for early binding because you can see the objects, methods, and properties
of the target application in the Object Browser, and as you write your code, you will see automatic tips
appear, such as a list of related properties and methods after you type an object reference. You can also
use the intrinsic constants defined in the target application.
Late Binding
The following code creates an entry in the Outlook calendar. The code uses the late binding technique:
Sub MakeOutlookAppointment()
‘Example of Outlook automation using late binding
‘Creates an appointment in Outlook
Dim olApp As Object ‘Reference to Outlook
Dim olAppointment As Object ‘Reference to Outlook Appointment
Dim olNameSpace As Object ‘Reference to Outlook NameSpace
Dim olFolder As Object ‘Dummy reference to initialize Outlook
Const olAppointmentItem = 1 ‘Outlook intrinsic constants not available
Const olFolderInbox = 6 ‘Outlook intrinsic constants not available
‘Create link to Outlook
In the following examples that involve Outlook, you could be interrupted by your
virus scanning software when accessing Outlook, because the scanner could identify
your actions as possible virus activity.
Chapter 19: Interacting with Other Office Applications
VB.NET PDF Library SDK to view, edit, convert, process PDF file
NET program. Password, digital signature and PDF text, image and page redaction will be used and customized. PDF Annotation Edit.
chrome save pdf with fields; create a fillable pdf form from a pdf
C# Create PDF Library SDK to convert PDF from other file formats
you can add some additional information to generated PDF file. What's more, you can also protect created PDF file by adding digital signature (watermark) on
can save pdf form data; add text field to pdf
Set olApp = CreateObject(“Outlook.Application”)
Set olNameSpace = olApp.GetNamespace(“MAPI”)
Set olFolder = olNameSpace.GetDefaultFolder(olFolderInbox)
Set olAppointment = olApp.CreateItem(olAppointmentItem)
‘Set details of appointment
With olAppointment
.Subject = “Discuss Whitefield Contract”
.Start = DateSerial(2007, 2, 26) + TimeSerial(9, 30, 0)
.End = DateSerial(2007, 2, 26) + TimeSerial(11, 30, 0)
.ReminderPlaySound = True
End With
‘Release object variable
Set olApp = Nothing
End Sub
The basic technique in programming another application is to create an object variable referring to 
that application. The object variable in this case is olApp. You then use olApp(as you would use the
Applicationobject in Excel) to refer to objects in the external application’s object model. In this case,
the CreateItemmethod of Outlook’s Applicationobject is used to create a reference to a new
You have also created references to the NameSpaceobject and the Inbox folder. This is not because you
want to use these objects. It is a way of initializing Outlook that has been found to be effective. If you
don’t do this, errors can occur.
Because Outlook’s intrinsic constants are not available in late binding, you need to define your own con-
stants, such as olAppointmentItemhere, or substitute the value of the constant as the parameter value.
You go on to use the properties and methods of the Appointmentobject in the With...EndWithstruc-
ture. Note the times have been defined using the DateSerialand TimeSerialfunctions to avoid ambi-
guity or problems in an international context. See Chapter 25 for more details on international issues.
By declaring olAppand olAppointmentas the generic Objecttype, you force VBAto use late binding.
VBAcannot resolve all the links to Outlook until it executes the CreateObjectfunction.
The CreateObjectinput argument defines the application name and class of object to be created.
Outlookis the name of the application and Applicationis the class. Many applications allow you to
create objects at different levels in the object model. For example, Excel allows you to create WorkSheet
or Chartobjects from other applications, using Excel.WorkSheetor Excel.Chartas the input param-
eter of the CreateObjectfunction.
It is good programming practice to close the external application when you are finished with it and set
the object variable to Nothing. This releases the memory used by the link and the application.
If you run this macro, nothing will happen in Excel at all. However, open up Outlook, and in the
Calendar you will find that the appointment has been added for the morning of February 26, as shown
in Figure 19-1.
Chapter 19: Interacting with Other Office Applications
C# PDF Convert to Images SDK: Convert PDF to png, gif images in C#
image files including all PDF contents, like watermark and signature in .NET. C#.NET DLLs Solution for Converting Images to PDF in C# Add necessary references:
add print button to pdf form; add email button to pdf form
C# PDF remove image library: remove, delete images from PDF in C#.
Support removing vector image, graphic picture, digital photo, scanned signature, logo, etc. Remove Image from PDF Page Using C#. Add necessary references:
create pdf form; android edit pdf forms
Figure 19-1
Early Binding
If you want to use early binding, you need to establish a reference to the type library of the external
application in your VBAproject. You do this from the VBE by clicking Tools➪References, which dis-
plays the dialog box shown in Figure 19-2.
Figure 19-2
Chapter 19: Interacting with Other Office Applications
You create a reference by checking the box next to the object library. Once you have a reference to an
application, you can declare your object variables as the correct type. For example, you could declare
olEntryas an AddressEntrytype, as follows:
Dim olEntry As AddressEntry
VBAwill search through the type libraries, in the order shown from the top down, to find references to
object types. If the same object type is present in more than one library, it will use the first one found.
You can select a library and click the Priority buttons to move it up or down the list to change the order
in which libraries are searched. There is no need to depend on priority, however. You can always qualify
an object by preceding it with the name of the main object in the library. For example, instead of using
AddressEntry, use Outlook.AddressEntry.
The following example uses early binding. It lists all the names of the entries in the Outlook Contacts
folder, placing them in column Aof the active worksheet. Make sure that you have created a reference to
the Outlook object library before you try to execute it, or you will get the error “User-defined type not
Sub DisplayOutlookContactNames()
‘Example of Outlook automation using early binding
‘Lists all the Contact names from Outlook in the A column
‘of the active sheet
Dim olApp As Outlook.Application
Dim olNameSpace As Outlook.NameSpace
Dim olFolder As Outlook.Folder
Dim olAddresslist As AddressList
Dim olEntry As AddressEntry
Dim i As Long
‘Create link to Outlook Contacts folder
Set olApp = New Outlook.Application
Set olNameSpace = olApp.GetNamespace(“MAPI”)
Set olFolder = olNameSpace.GetDefaultFolder(olFolderInbox)
Set olAddresslist = olNameSpace.AddressLists(“Contacts”)
For Each olEntry In olAddresslist.AddressEntries
i = i + 1
‘Enter contacts in A column of active sheet
Cells(i, 1).Value = olEntry.Name
‘Release object variable
Set olApp = Nothing
End Sub
Here, you directly declare olAppto be an Outlook.Applicationtype. The other Dimstatements also
declare object variables of the type you need. If the same object name is used in more than one object
library, you can precede the object name by the name of the application, rather than depend on the priority
of the type libraries. You did this with Outlook.NameSpaceto illustrate the point. The Newkeyword is
used when assigning a reference to Outlook.Applicationto olAppto create a new instance of Outlook.
Chapter 19: Interacting with Other Office Applications
The fact that you declare the variable types correctly makes VBAuse early binding. You could use the
CreateObjectfunction to create the olAppobject variable, instead of the Newkeyword, without affect-
ing the early binding. However, it is more efficient to use New.
Opening a Document in Word
If you want to open a file created in another Office application, you can use the GetObjectfunction to
directly open the file. However, it is just as easy to open an instance of the application and open the file
from the application. Another use of GetObjectis examined shortly.
The following code copies a range in Excel to the clipboard. It then starts a new instance of Word, opens
an existing Word document, and pastes the range to the end of the document. Because the code uses
early binding, make sure you establish a reference to the Word object library:
Sub CopyTableToWordDocument()
‘Example of Word automation using early binding
‘Copies range from workbook and appends it to existing Word document
Dim wdApp As Word.Application
‘Copy A1:B6 in Table sheet
‘Establish link to Word
Set wdApp = New Word.Application
With wdApp
‘Open Word document
.Documents.Open Filename:=”C:\VBA_Prog_Ref\Chapter19\Table.docx”
With .Selection
‘Go to end of document and insert paragraph
.EndKey Unit:=wdStory
‘Paste table
End With
‘Exit Word
End With
‘Release object variable
Set wdApp = Nothing
End Sub 
If you are not familiar with the Word object model, you can use the Word macro
recorder to discover which objects, properties, and methods you need to use to per-
form a Word task that you can do manually.
Chapter 19: Interacting with Other Office Applications
The Newkeyword creates a new instance of Word, even if Word is already open. The Openmethod of the
Documentscollection is used to open the existing file. The code then selects the end of the document,
enters a new empty paragraph, and pastes the range. The document is then saved and the new instance
of Word is closed.
Accessing an Active Word Document 
Say you are working in Excel, creating a table. You also have Word open with a document active, into
which you want to paste the table you are creating. You can copy the table from Excel to the document
using the following code. There is no need to establish a reference to Word if you declare wdAppas an
Objecttype, because VBAwill use late binding. On the other hand, you can establish a reference to
Word, declare wdAppas a Word.Applicationtype, and VBAwill use early binding. In this example,
you are using early binding:
Sub CopyTableToOpenWordDocument()
‘Example of Word automation using late binding
‘Copies range from workbook and appends it to
‘ a currently open Word document
Dim wdApp As Word.Application
‘Copy Range A1:B6 on sheet named Table
‘Establish link to open instance of Word
Set wdApp = GetObject(, “Word.Application”)
With wdApp.Selection
‘Go to end of document and insert paragraph
.EndKey Unit:=wdStory
‘Paste table
End With
‘Release object variable
Set wdApp = Nothing
End Sub 
The GetObjectfunction has two input parameters, both of which are optional. The first parameter can
be used to specify a file to be opened. The second can be used to specify the application program to
open. If you do not specify the first parameter, GetObjectassumes you want to access a currently open
instance of Word. If you specify a zero-length string as the first parameter, GetObjectassumes you
want to open a new instance of Word.
You can use GetObjectwith no first parameter, as in the previous code, to access a current instance of
Word that is in memory. However, if there is no current instance of Word running, GetObjectwith no
first parameter causes a run-time error.
Chapter 19: Interacting with Other Office Applications
Documents you may be interested
Documents you may be interested