Reply
 
Thread Tools Display Modes
  #1   Report Post  
Shalini
 
Posts: n/a
Default "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   Report Post  
Doug Robbins
 
Posts: n/a
Default

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   Report Post  
Shalini
 
Posts: n/a
Default

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   Report Post  
Peter Jamieson
 
Posts: n/a
Default

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   Report Post  
Shalini
 
Posts: n/a
Default

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   Report Post  
Peter Jamieson
 
Posts: n/a
Default

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   Report Post  
Shalini
 
Posts: n/a
Default

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   Report Post  
Peter Jamieson
 
Posts: n/a
Default

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   Report Post  
Matt
 
Posts: n/a
Default

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

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Word 97 "cannot open data source" STEVE Mailmerge 1 May 20th 05 02:10 PM
Envelope Address GR New Users 5 April 24th 05 09:48 PM
How do I insert Excel data as a Word table and stay within margins Fritz Tables 1 February 6th 05 09:39 AM
multiple docs, one data source kp Mailmerge 12 January 31st 05 05:41 PM
Mail merge error occurs when filtering Excel data source Dave Mailmerge 1 December 2nd 04 11:46 PM


All times are GMT +1. The time now is 09:21 PM.

Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 Microsoft Office Word Forum - WordBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Word"