Hi,
I am trying to automate the Mail merge functionality of MS Word 2000, Excel 2000 as its datasource using ASP.Net/
VB.Net but when I execute my code the following exception is generated :(:
System.Runtime.InteropServices.COMException (0x800A1722): Word was unable to open the data source. at Word.MailMerge.OpenDataSource(String Name, Object& Format, Object& ConfirmConversions, Object& ReadOnly, Object& LinkToSource, Object& AddToRecentFiles, Object& PasswordDocument, Object& PasswordTemplate, Object& Revert, Object& WritePasswordDocument, Object& WritePasswordTemplate, Object& Connection, Object& SQLStatement, Object& SQLStatement1) at FPA.JobIntegration.btnMailMerge_Click(Object sender, EventArgs e) in C:\Inetpub\wwwroot\FPA\JobIntegration.aspx.
vb:line 96
Please have a look at the code pasted below and do the needful.
Private Sub btnMailMerge_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnMailMerge.Click
Dim wrdApp As Word.Application
Dim wrdDoc As Word._Document
Dim wrdDoc1 As Word.MailMergeDataSource
Dim wrdSelection As Word.Selection
Dim wrdMailMerge As Word.MailMerge
Dim wrdMergeFields As Word.MailMergeFields
Dim fileWORDName, fileEXCELName As String
Try
wrdApp = New Word.Application
wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Templates\")
fileWORDName = "ThankYou-Shalini.doc"
wrdDoc = wrdApp.Documents.Open(FileName:=fileWORDName, ConfirmConversions:=False, ReadOnly _
:=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _
:="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _
, Format:=Word.WdOpenFormat.wdOpenFormatAuto)
wrdMailMerge = wrdDoc.MailMerge
If wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument Then
wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters
End If
wrdApp.Visible = True
wrdDoc.ActiveWindow.Activate()
wrdDoc.ActiveWindow.Visible = True
fileEXCELName = "C:\Inetpub\wwwroot\FPA\Archive\FullfillmentReport 1.xls![FullfillmentReport]"
wrdMailMerge.OpenDataSource(Name:=fileEXCELName, _
ReadOnly:=False, LinkToSource:=True, _
Connection:="DSN=Excel Files;DBQ=" & fileEXCELName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;", _
SQLStatement:="SELECT * FROM `Data`")
' Perform mail merge.
wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters
wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument
wrdMailMerge.SuppressBlankLines = True
wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord
wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord
wrdMailMerge.Execute(True)
' Close the original form document.
'wrdDoc.Saved = True
'wrdDoc.Close(False)
Catch ex As Exception
Response.Write(ex.ToString)
Dim AllWORDProcess() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessesByName("WIN WORD")
Dim WordProcess As New System.Diagnostics.Process
For Each WordProcess In AllWORDProcess
WordProcess.Kill()
Next
WordProcess.Close()
Dim AllEXCELProcess() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcessesByName("Exc el")
Dim ExcelProcess As New System.Diagnostics.Process
For Each ExcelProcess In AllEXCELProcess
ExcelProcess.Kill()
Next
ExcelProcess.Close()
Finally
wrdMailMerge = Nothing
wrdDoc = Nothing
wrdApp = Nothing
End Try
End Sub