Home |
Search |
Today's Posts |
#1
|
|||
|
|||
"Word was unable to open the Excel data source" Asp.net Mailmerge
Hi,
I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#2
|
|||
|
|||
Looking at your code, it appears that the initially, MainDocumentType is
being set to wdNotAMergeDocument and that is probably the reason that you are getting the error message. You do later change the MainDocumentType, but I think you will have to do that before you attempt to attach the data source. -- Hope this helps. Please reply to the newsgroup unless you wish to avail yourself of my services on a paid consulting basis. Doug Robbins - Word MVP "Shalini" Shalini @discussions.microsoft.com wrote in message ... Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#3
|
|||
|
|||
Thanks for your prompt reply.
But hard luck, even after commenting that statement, i am still getting the same error. 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 88 Please do the needful. "Doug Robbins" wrote: Looking at your code, it appears that the initially, MainDocumentType is being set to wdNotAMergeDocument and that is probably the reason that you are getting the error message. You do later change the MainDocumentType, but I think you will have to do that before you attempt to attach the data source. -- Hope this helps. Please reply to the newsgroup unless you wish to avail yourself of my services on a paid consulting basis. Doug Robbins - Word MVP "Shalini" Shalini @discussions.microsoft.com wrote in message ... Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#4
|
|||
|
|||
You do not say what is going wrong and at what point it is happening, but...
Dim fileWORDName, fileEXCELName As Object I do not know which is required or better in ASP.NET, but can these be "As String". Does it make any difference if they are? wrdDoc = wrdApp.Documents.Open(FileName:=fileWORDName, If this document is already a Mail Merge Main Document, Word will look for its data source when OpenFileName executes. If it cannot find the data source, Word will try to display a dialog box, so will probably hang in your situation. You cannot prevent this, so the only good solution is to be certain that the document is not attached to a data source before your ASP.NET routine tries to open it. wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ This /may/ work, but I would try fileEXCELName = "C:\Inetpub\wwwroot\FPA\Archive\FullfillmentReport 1.xls" Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ The DBQ must be the name of the file. here, you are using a piece of text "fileEXCELName". Try something like Connection:= _ "DSN=Excel Files;DBQ=" & fileEXCELName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;" _ I suspect the fileEXCELName will have to be the full path name of the file (as above) for this to work. SQLStatement:="SELECT * FROM 'Data'" This may be OK, but a. it clearly requires that your Excel workbook has a named range called Data b. you /may/ need to use a different kind of single quotes around Data, i.e. single back quotes: SQLStatement:="SELECT * FROM `Data`" Try those changes first. and let's see... Peter Jamieson From: "Shalini" Shalini @discussions.microsoft.com Subject: "Word was unable to open the Excel data source" Asp.net Mailmerge Date: 17 June 2005 11:14 Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#5
|
|||
|
|||
Hi Peter,
I tried to incorporate all the changes as recommended by you, and then also it is throwing an exception: ''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 90 Also, the word file specified in the code is a simple word document with only fields embedded as a normal text. waiting for your reply soon Regards, Shalini "Peter Jamieson" wrote: You do not say what is going wrong and at what point it is happening, but... Dim fileWORDName, fileEXCELName As Object I do not know which is required or better in ASP.NET, but can these be "As String". Does it make any difference if they are? wrdDoc = wrdApp.Documents.Open(FileName:=fileWORDName, If this document is already a Mail Merge Main Document, Word will look for its data source when OpenFileName executes. If it cannot find the data source, Word will try to display a dialog box, so will probably hang in your situation. You cannot prevent this, so the only good solution is to be certain that the document is not attached to a data source before your ASP.NET routine tries to open it. wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ This /may/ work, but I would try fileEXCELName = "C:\Inetpub\wwwroot\FPA\Archive\FullfillmentReport 1.xls" Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ The DBQ must be the name of the file. here, you are using a piece of text "fileEXCELName". Try something like Connection:= _ "DSN=Excel Files;DBQ=" & fileEXCELName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;" _ I suspect the fileEXCELName will have to be the full path name of the file (as above) for this to work. SQLStatement:="SELECT * FROM 'Data'" This may be OK, but a. it clearly requires that your Excel workbook has a named range called Data b. you /may/ need to use a different kind of single quotes around Data, i.e. single back quotes: SQLStatement:="SELECT * FROM `Data`" Try those changes first. and let's see... Peter Jamieson From: "Shalini" Shalini @discussions.microsoft.com Subject: "Word was unable to open the Excel data source" Asp.net Mailmerge Date: 17 June 2005 11:14 Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#6
|
|||
|
|||
Are you using Word 2002 or 2003? If so,
a. does ASP.NET insist on having a full set of parameters in each method call? If so you will need an extra parameter at the end: Subtype=wdMergeSubtypeWord2000 b.I get the impression from the error message that the missing Subtype is not causing a problem. If you do not need to use ODBC, I would try simplifying the OpenDataSource so that it uses the default connection method (OLEDB): wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, _ Connection:= "", _ SQLStatement:="SELECT * FROM 'Data'", _ SQLStatement1="") c. With OLEDB, if you need the Subtype parameter, use Subtype:=wdMergeSubtypeAccess (even though it is Excel, not Access) If that does not work, or you are using Word 2000, I do not know what is going wrong. I would ensure that a. making the same connection using the same code in Word VBA works - I think it will be much easier to discover the source of the problem using VBA b. the account that is running the ASP.NET process has the necessary permissions to open the Excel file (in the case of ODBC, you may also need to check that the account has access to the ODBC DSN. For example, if you created a /user/ DSN under your account, that DSN will not be available to other users - you would need a /system/ DSN, or a file DSN. With a file DSN you would need to change some other stuff too. Peter Jamieson "Shalini" wrote in message ... Hi Peter, I tried to incorporate all the changes as recommended by you, and then also it is throwing an exception: ''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 90 Also, the word file specified in the code is a simple word document with only fields' embedded as a normal text. waiting for your reply soon Regards, Shalini "Peter Jamieson" wrote: You do not say what is going wrong and at what point it is happening, but... Dim fileWORDName, fileEXCELName As Object I do not know which is required or better in ASP.NET, but can these be "As String". Does it make any difference if they are? wrdDoc = wrdApp.Documents.Open(FileName:=fileWORDName, If this document is already a Mail Merge Main Document, Word will look for its data source when OpenFileName executes. If it cannot find the data source, Word will try to display a dialog box, so will probably hang in your situation. You cannot prevent this, so the only good solution is to be certain that the document is not attached to a data source before your ASP.NET routine tries to open it. wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ This /may/ work, but I would try fileEXCELName = "C:\Inetpub\wwwroot\FPA\Archive\FullfillmentReport 1.xls" Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ The DBQ must be the name of the file. here, you are using a piece of text "fileEXCELName". Try something like Connection:= _ "DSN=Excel Files;DBQ=" & fileEXCELName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;" _ I suspect the fileEXCELName will have to be the full path name of the file (as above) for this to work. SQLStatement:="SELECT * FROM 'Data'" This may be OK, but a. it clearly requires that your Excel workbook has a named range called Data b. you /may/ need to use a different kind of single quotes around Data, i.e. single back quotes: SQLStatement:="SELECT * FROM `Data`" Try those changes first. and let's see... Peter Jamieson From: "Shalini" Shalini @discussions.microsoft.com Subject: "Word was unable to open the Excel data source" Asp.net Mailmerge Date: 17 June 2005 11:14 Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#7
|
|||
|
|||
Hi Peter,
I am making use of Office 2000 for this purpose. Asp.Net account is having access rights of using Excel and Word. Also, when i make use of DDE connection, then following exception is reported: System.Runtime.InteropServices.COMException (0x800A1608): Word could not re-establish a DDE connection to Microsoft Excel to complete the current task. 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 77 code is pasted below: wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:="Entire Spreadsheet", _ SQLStatement:="", SQLStatement1:="") Please do the needful. I have also copies the content after editing a recorded macro. Regards, Shalini "Peter Jamieson" wrote: Are you using Word 2002 or 2003? If so, a. does ASP.NET insist on having a full set of parameters in each method call? If so you will need an extra parameter at the end: Subtype=wdMergeSubtypeWord2000 b.I get the impression from the error message that the missing Subtype is not causing a problem. If you do not need to use ODBC, I would try simplifying the OpenDataSource so that it uses the default connection method (OLEDB): wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, _ Connection:= "", _ SQLStatement:="SELECT * FROM 'Data'", _ SQLStatement1="") c. With OLEDB, if you need the Subtype parameter, use Subtype:=wdMergeSubtypeAccess (even though it is Excel, not Access) If that does not work, or you are using Word 2000, I do not know what is going wrong. I would ensure that a. making the same connection using the same code in Word VBA works - I think it will be much easier to discover the source of the problem using VBA b. the account that is running the ASP.NET process has the necessary permissions to open the Excel file (in the case of ODBC, you may also need to check that the account has access to the ODBC DSN. For example, if you created a /user/ DSN under your account, that DSN will not be available to other users - you would need a /system/ DSN, or a file DSN. With a file DSN you would need to change some other stuff too. Peter Jamieson "Shalini" wrote in message ... Hi Peter, I tried to incorporate all the changes as recommended by you, and then also it is throwing an exception: ''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 90 Also, the word file specified in the code is a simple word document with only fields' embedded as a normal text. waiting for your reply soon Regards, Shalini "Peter Jamieson" wrote: You do not say what is going wrong and at what point it is happening, but... Dim fileWORDName, fileEXCELName As Object I do not know which is required or better in ASP.NET, but can these be "As String". Does it make any difference if they are? wrdDoc = wrdApp.Documents.Open(FileName:=fileWORDName, If this document is already a Mail Merge Main Document, Word will look for its data source when OpenFileName executes. If it cannot find the data source, Word will try to display a dialog box, so will probably hang in your situation. You cannot prevent this, so the only good solution is to be certain that the document is not attached to a data source before your ASP.NET routine tries to open it. wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ This /may/ work, but I would try fileEXCELName = "C:\Inetpub\wwwroot\FPA\Archive\FullfillmentReport 1.xls" Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ The DBQ must be the name of the file. here, you are using a piece of text "fileEXCELName". Try something like Connection:= _ "DSN=Excel Files;DBQ=" & fileEXCELName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;" _ I suspect the fileEXCELName will have to be the full path name of the file (as above) for this to work. SQLStatement:="SELECT * FROM 'Data'" This may be OK, but a. it clearly requires that your Excel workbook has a named range called Data b. you /may/ need to use a different kind of single quotes around Data, i.e. single back quotes: SQLStatement:="SELECT * FROM `Data`" Try those changes first. and let's see... Peter Jamieson From: "Shalini" Shalini @discussions.microsoft.com Subject: "Word was unable to open the Excel data source" Asp.net Mailmerge Date: 17 June 2005 11:14 Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#8
|
|||
|
|||
Sorry, I'm trying to take a closer look at this one, and I hoped to get back
to you sooner. I expect to take a while so you might be better off talking directly to Microsoft Support. Peter Jamieson "Shalini" wrote in message ... Hi Peter, I am making use of Office 2000 for this purpose. Asp.Net account is having access rights of using Excel and Word. Also, when i make use of DDE connection, then following exception is reported: System.Runtime.InteropServices.COMException (0x800A1608): Word could not re-establish a DDE connection to Microsoft Excel to complete the current task. 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 77 code is pasted below: wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:="Entire Spreadsheet", _ SQLStatement:="", SQLStatement1:="") Please do the needful. I have also copies the content after editing a recorded macro. Regards, Shalini "Peter Jamieson" wrote: Are you using Word 2002 or 2003? If so, a. does ASP.NET insist on having a full set of parameters in each method call? If so you will need an extra parameter at the end: Subtype=wdMergeSubtypeWord2000 b.I get the impression from the error message that the missing Subtype is not causing a problem. If you do not need to use ODBC, I would try simplifying the OpenDataSource so that it uses the default connection method (OLEDB): wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, _ Connection:= "", _ SQLStatement:="SELECT * FROM 'Data'", _ SQLStatement1="") c. With OLEDB, if you need the Subtype parameter, use Subtype:=wdMergeSubtypeAccess (even though it is Excel, not Access) If that does not work, or you are using Word 2000, I do not know what is going wrong. I would ensure that a. making the same connection using the same code in Word VBA works - I think it will be much easier to discover the source of the problem using VBA b. the account that is running the ASP.NET process has the necessary permissions to open the Excel file (in the case of ODBC, you may also need to check that the account has access to the ODBC DSN. For example, if you created a /user/ DSN under your account, that DSN will not be available to other users - you would need a /system/ DSN, or a file DSN. With a file DSN you would need to change some other stuff too. Peter Jamieson "Shalini" wrote in message ... Hi Peter, I tried to incorporate all the changes as recommended by you, and then also it is throwing an exception: ''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 90 Also, the word file specified in the code is a simple word document with only fields' embedded as a normal text. waiting for your reply soon Regards, Shalini "Peter Jamieson" wrote: You do not say what is going wrong and at what point it is happening, but... Dim fileWORDName, fileEXCELName As Object I do not know which is required or better in ASP.NET, but can these be "As String". Does it make any difference if they are? wrdDoc = wrdApp.Documents.Open(FileName:=fileWORDName, If this document is already a Mail Merge Main Document, Word will look for its data source when OpenFileName executes. If it cannot find the data source, Word will try to display a dialog box, so will probably hang in your situation. You cannot prevent this, so the only good solution is to be certain that the document is not attached to a data source before your ASP.NET routine tries to open it. wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ This /may/ work, but I would try fileEXCELName = "C:\Inetpub\wwwroot\FPA\Archive\FullfillmentReport 1.xls" Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ The DBQ must be the name of the file. here, you are using a piece of text "fileEXCELName". Try something like Connection:= _ "DSN=Excel Files;DBQ=" & fileEXCELName & ";DriverId=790;MaxBufferSize=2048;PageTimeout= 5;" _ I suspect the fileEXCELName will have to be the full path name of the file (as above) for this to work. SQLStatement:="SELECT * FROM 'Data'" This may be OK, but a. it clearly requires that your Excel workbook has a named range called Data b. you /may/ need to use a different kind of single quotes around Data, i.e. single back quotes: SQLStatement:="SELECT * FROM `Data`" Try those changes first. and let's see... Peter Jamieson From: "Shalini" Shalini @discussions.microsoft.com Subject: "Word was unable to open the Excel data source" Asp.net Mailmerge Date: 17 June 2005 11:14 Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
#9
|
|||
|
|||
Hi Shanli,
I needed to do a merge in a windows forms app and used your code. I made a change to the excel datasource and that was about it... It seems to work for me with office 2003. If you have any other enhancements, please post them. Regards, Matt 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 fileWORDName = "C:\merge.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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdApp.Visible = False wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdMailMerge.OpenDataSource(Name:="c:\TestMerge.xl s", SQLStatement:="SELECT * FROM `Results$`") 'Don't forget the Sheetname ' 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 MessageBox.Show(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 "Shalini" wrote: Thanks for your prompt reply. But hard luck, even after commenting that statement, i am still getting the same error. 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 88 Please do the needful. "Doug Robbins" wrote: Looking at your code, it appears that the initially, MainDocumentType is being set to wdNotAMergeDocument and that is probably the reason that you are getting the error message. You do later change the MainDocumentType, but I think you will have to do that before you attempt to attach the data source. -- Hope this helps. Please reply to the newsgroup unless you wish to avail yourself of my services on a paid consulting basis. Doug Robbins - Word MVP "Shalini" Shalini @discussions.microsoft.com wrote in message ... Hi, I am trying to perform word mail merge operation via ASP.Net using Excel as data source. Code is attached below: Dim wrdApp As Word.Application Dim wrdDoc As Word._Document Dim wrdMailMerge As Word.MailMerge Dim fileWORDName, fileEXCELName As Object 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 wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdNotAMergeDocument wrdApp.Visible = True wrdDoc.ActiveWindow.Activate() wrdDoc.ActiveWindow.Visible = True wrdApp.ChangeFileOpenDirectory("C:\Inetpub\wwwroot \FPA\Archive\") fileEXCELName = "FullfillmentReport1.xls" wrdMailMerge.OpenDataSource(Name:= _ fileEXCELName, _ ConfirmConversions:=False, ReadOnly:=False, LinkToSource:=True, _ AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:="", _ WritePasswordDocument:="", WritePasswordTemplate:="", Revert:=False, _ Format:=Word.WdOpenFormat.wdOpenFormatAuto, Connection:= _ "DSN=Excel Files;DBQ=fileEXCELName;DriverId=790;MaxBufferSize =2048;PageTimeout=5;" _ , SQLStatement:="SELECT * FROM 'Data'", SQLStatement1:="") ' Perform mail merge. wrdMailMerge.Destination = Word.WdMailMergeDestination.wdSendToNewDocument wrdMailMerge.MainDocumentType = Word.WdMailMergeMainDocType.wdFormLetters wrdMailMerge.SuppressBlankLines = True wrdMailMerge.DataSource.FirstRecord = Word.WdMailMergeDefaultRecord.wdDefaultFirstRecord wrdMailMerge.DataSource.LastRecord = Word.WdMailMergeDefaultRecord.wdDefaultLastRecord wrdMailMerge.Execute(False) ' 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 ' Release References. wrdMailMerge = Nothing wrdDoc = Nothing wrdApp = Nothing End Try Please do the needful |
Reply |
Thread Tools | |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Forum | |||
Word 97 "cannot open data source" | Mailmerge | |||
Envelope Address | New Users | |||
How do I insert Excel data as a Word table and stay within margins | Tables | |||
multiple docs, one data source | Mailmerge | |||
Mail merge error occurs when filtering Excel data source | Mailmerge |