MailMerge.OpenDataSource method (Publisher)

Attaches a data source to the specified publication, which becomes a main publication if it is not one already.


expression.OpenDataSource (bstrDataSource, bstrConnect, bstrTable, fOpenExclusive, fNeverPrompt)

expression A variable that represents a MailMerge object.


Name Required/Optional Data type Description
bstrDataSource Optional String The data source path and file name. You can specify a Microsoft Query (.qry) file instead of specifying a data source, a connection string, and a table name string; values in a Microsoft Query file override values for bstrConnect and bstrTable.
bstrConnect Optional String A connection string.
bstrTable Optional String The name of the table in the data source.
fOpenExclusive Optional Long True to deny others access to the database. False allows others read/write permission to the database. The default value is False.
fNeverPrompt Optional Long True never prompts when opening the data source. False displays the Data Link Properties dialog box. The default value is False.


If you are using a data source for mail merge, you must add a catalog merge area to the publication page before you attach to the data source.


This example attaches a table from a database and denies everyone else write access to the database while it is opened.

For this example to run properly, you must replace PathToFile with a valid file path and TableName with a valid data source table name.

Sub AttachDataSource() 
    ActiveDocument.MailMerge.OpenDataSource _ 
        bstrDataSource:="PathToFile",  _ 
        bstrTable:="TableName", _ 
        fNeverPrompt:=True, fOpenExclusive:=True 
End Sub


For TableName, if an Excel spreadsheet is being opened, TableName must be followed by $. That is, bstrTable:="Sheet1" will not work; bstrTable:="Sheet1$" will work. Following is an example that further clarifies this.

In this example, the data is stored in MySpreadSheet.xlsx, Sheet1, in the same directory as the Publisher file.

Dim strDataFile as String
strDataFile = Application.ActiveDocument.Path & "MySpreadSheet.xlsx"

ActiveDocument.MailMerge.OpenDataSource _ 
    bstrDataSource:=strDataFile,  _ 
    bstrTable:="Sheet1$", _ 
    fNeverPrompt:=True, fOpenExclusive:=True 

Support and feedback

Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.