View Single Post
  #4  
Old June 17th, 2005, 01:13 PM
Peter Jamieson
external usenet poster
 
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