How to run word and pass a mail merge values and fax it to the recipient

B

Belinda

Hello All

I have the following requirement:

- I have a standard template document
I have a table in SQL Server that as some information like address,
name and fax # I want this to be substituted into this word template
and the documents must be generated to be sent by fax. I want the
resultant mail merged document generated by word to be faxed.

Please advise what is the best way to implement this scenario.

In brief I want to create a template word file and a seperate data
table this must be mail merged and resultant output documents
generated. I want to fax these documents to the receipients.

Please note I would like to start word from command line and pass the
template file and the mail merge list as well. I would like to call
word from SQL Server DTS tasks so only way I can do it is by calling
it in batch mode.

Please provide the command line syntax to invoke word and pass these
arguments
to generate a fax from word. Also what is the best fax solution for
word.

Thanks
Belinda
 
P

Peter Jamieson

First, be advised that Microsoft does not recommend running Office
applications in an unattended server environment - there's a KB article on
this subject but I don't have the number to hand.

Second, I don't think there is a way to pass an arbitrary set of parameters
to Word via the command line - if you have to use a command line, you can
basically pass a document name and use the /m switch followed the name of a
macro to run. You may be able to do more if you have Word 2003 using the /p
switch to load an XML file but I suspect not.

Since doing a merge to fax from Word brings its own set of problems,
personally, I'd aim to use a Word macro anyway to generate the faxes rather
than relying on the built-in merge to e-mail facilities - see the macro code
below.

To avoid the command line problem, what /I/ would probably do is set up a
table in SQL server that contained any information needed to run the merge
that you can't pass through the comand line - e.g., in this case, the name
of the table you want to merge. You can use e.g. ADO in your VB macro to get
the data from SQL Server.

As for the fax production side to this, here's my usual spiel:

For Windows XP/Word 2003, the only "offical" way to merge to fax is to
have
the full Outlook (not Outlook Express) and merge to e-mail - see e.g.

http://support.microsoft.com/default.aspx?scid=kb;EN-US;289532

However,
a. the "Merge to fax" button/option is never enabled in Word 2003
b. although it is possible to enable the button, Word actually uses
exactly the same method to send a fax (i.e. via MAPI/Outlook) as it uses to
send
an e-mail. The only difference is that you see a slightly different Word
dialog box for setting up the fax.
c. Office 2003 has introduced support for faxing to "Internet fax
services" such as Venali. If you want to go that route, as things stand I
think your
only option is to go the merge-to-e-mail route. I have no experience of
merging to these new fax
services with the production version of Word 2003.
d. however, as far as I know, if you have any images in your fax, faxing
via "merge to e-mail" will not format your document correctly (it's the
step that renders the e-mail into fax format that goes wrong).

If you really want to enable the merge to fax button, you need to create a
file called msmail.ini in your Windows directory (or WINNT
directory or whatever) with at least the following lines:

[EFAX Transport]
LocalFax=1

If you want to merge to a faxmodem rather than an Internet fax service,
and your merge is fairly simple (one fax for each record in the data source)
you could try the following macro.

If you're going to try it, please read the notes, modify the macro to suit
your needs, and test it (a couple of other people have used the macro
successfully with various versions of Word and Windows)

If you're unfamiliar with VBA etc. getting this to work could be quite
difficult. A useful starting point is the Word MVPs site at
http://www.mvps.org/word , and specifically the following
"get-you-started" article

http://www.mvps.org/word/FAQs/MacrosVBA/CreateAMacro.htm


The macro code:

'-----------------------------------------------------
Sub MergeOneFaxPerSourceRec()

' Disclaimer: Use this macro at your own risk.
' Purpose: Perform one Word mailmerge for each record in
' a Word data source, sending the results of each
' merge to a different fax number specified in a
' column of the data source
' Author: Peter J Jamieson
' Date: November 2003
' Assumes: Word 2000 or later (Word 97 might work)
' Windows 2000 or later, with the standard
' fax service software installed and
' configured to use a working fax device
' You have used Tools|References in the VBA
' editor to add the appropriate type library
' ("Faxcom 1.0 Type Library")
' You correctly adapt the macro to your
' environment
' Overview: The routine performs one merge per record
' in the data source. For each merge, the macro:
' - creates a new Word document
' - "prints" the document to the Fax printer,
' but outputting the result to a .tif file
' rather than allowing the fax printer to
' send the fax directly. This allows us to
' specify the fax number etc. in the macro
' rather than having to respond to the fax
' printer's dialog box.
' - submits the tif file to the fax service
' - discards the Word document
'
' Notes: This does not use the Extended Fax client API
' because it is not available in Windows 2000.
'
' This macro relies on the fax service to deliver
' the faxes once trhey have been submitted. You
' should use the fax service to verify which faxes
' have been sent and which, if any, failed. The fax
' service should retain a copy of each fax submitted
' so that retransmission should be feasible from
' within the service, i.e. without re-running the
' merge.

' NB, needs bettor error management and doubtless other
' things a VBA expert would point out.

' Specify the path for the .tif files saved by the Fax Printer
' This path must exist and the name should end with "\"
Const sTifFolder = "c:\tif\"
' Specify the name of the .tif file to output
Const sTifFile = "mergetif.tif"
' Specify the fax printer name that makes it all work
Const sFaxPrinter = "Fax"

Dim bFaxPortAvailable As Boolean
Dim bFaxServerAvailable As Boolean

Dim bTerminateMerge As Boolean

Dim lJobID As Long
Dim lSourceRecord As Long

Dim oApp As Word.Application
Dim oDataFields As Word.MailMergeDataFields
Dim oDoc As Word.Document
Dim oFaxDoc As FAXCOMLib.FaxDoc
Dim oFaxPort As FAXCOMLib.FaxPort
Dim oFaxPorts As FAXCOMLib.FaxPorts
Dim oFaxServer As FAXCOMLib.FaxServer
Dim oMerge As Word.MailMerge

Dim sActivePrinter As String
Dim sTifPath As String

' Phase 1.
' Connect to the Fax server
' and optionally see if a Port is available

Set oFaxServer = CreateObject("FaxServer.FaxServer")

If oFaxServer Is Nothing Then
MsgBox "Could not create a fax server object"
bFaxServerAvailable = False
Else
' This should connect us to the fax server on the current machine
oFaxServer.Connect Servername:=Environ("computername")
bFaxServerAvailable = True
bFaxPortAvailable = True

' begin optional section
' - ensure that at least one output port is available
' - not essential but we will just see an error later
' if no output port is available
Set oFaxPorts = oFaxServer.GetPorts
If oFaxPorts.Count = 0 Then
MsgBox "The fax server has no fax devices"
bFaxPortAvailable = False
Else
' look for a port that can send
For i = 1 To oFaxPorts.Count
Set oFaxPort = oFaxPorts.Item(i)
If oFaxPort.Send = 0 Then
Set oFaxPort = Nothing
Else
Exit For
End If
Next
If oFaxPort Is Nothing Then
MsgBox "The fax server has no ports configured to send faxes"
bFaxPortAvailable = False
Else
' at the moment we do not use the FaxPort object to get status
' info. so just get rid of it
Set oFaxPort = Nothing
End If
End If
' we do not need this either
Set oFaxPorts = Nothing
' end optional section

End If

' Phase 2.
' We can fax, so set up the printer
' and start the merges.

If bFaxServerAvailable And bFaxPortAvailable Then

' You may need to change this
Set oApp = Application

' The mail merge main document is assumed
' to be the active document in the current
' instance of Word
Set oDoc = oApp.ActiveDocument
Set oMerge = oDoc.MailMerge
Set oDataFields = oMerge.DataSource.DataFields

' save and set up the active printer
sActivePrinter = oApp.ActivePrinter
' don't change the printer if it is already
' correctly set up
' (I had problems when I tried to switch
' to the fax printer in code)
' you may need to adjust this for your
' fax printer name
If Left(sActivePrinter, 3) <> sFaxPrinter Then
oApp.ActivePrinter = sFaxPrinter
End If

With oMerge

' If no data source has been defined,
' do it here using OpenDataSource.
' But if it is already defined in the document,
' you should not need to define it here.

' .OpenDataSource _
' Name:="whatever"

lSourceRecord = 1
bTerminateMerge = False

Do Until bTerminateMerge
.DataSource.ActiveRecord = lSourceRecord

' if we have gone past the end
' (and possibly, if there are no records)
' then the Activerecord will not be what
' we have just tried to set it to

If .DataSource.ActiveRecord <> lSourceRecord Then
bTerminateMerge = True
Else
.DataSource.FirstRecord = lSourceRecord
.DataSource.LastRecord = lSourceRecord
.Destination = wdSendToNewDocument
.Execute

' Word always sets the output document produced
' by the merge to be the ActiveDocument

' Now print to the fax printer, specifying an
' OutputFileName.
' Specifying Background:=False is
' particularly important or the fax stage
' will fail later

' create the full path name for the file.
' (done separately so you can change the way
' you create the name and re-use the name later)

sTifPath = sTifFolder + sTifFile
oApp.PrintOut _
Background:=False, _
Append:=False, _
Range:=wdPrintAllDocument, _
OutputFileName:=sTifPath, _
Item:=wdPrintDocumentContent, _
Copies:=1, _
PageType:=wdPrintAllPages, _
PrintToFile:=True

' Don't need the document any more
oApp.ActiveDocument.Close Savechanges:=False

' Now make a FaxDocument
Set oFaxDoc = oFaxServer.CreateDocument(sTifPath)
If oFaxDoc Is Nothing Then
MsgBox "Could not create the fax document"
' you could consider finishing here by setting
' TerminateMerge = True
Else
' fill in whatever details you need
' from the data source or elsewhere
With oFaxDoc
' The number to send to. The only really essential
' piece of information. Here we get it from
' a field in the data source called "faxnumber"
.FaxNumber = oDataFields("faxnumber")

' DisplayName is a "user-friendly" name used
' by the Fax Server when you e.g. inspect the
' current fax status

' here we get it from a field in the data source
' called ufname
.DisplayName = oDataFields("ufname")
' here we just set it to ""
'.DisplayName = ""

' If you want a cover page, set SendCoverPage
' to a nonzero value. You could define whether
' or not you want a cover page, and which
' page to use, in your data source. However,
' if you specify a cover page, you /must/
' provide a valid name for the page. This code
' does not verify whether you do or not.
.SendCoverpage = 0

' If the cover page (.cov file) is a common
' cover page located on the server (i.e. in the
' default folder), set ServerCoverPage=-1
' and provide the name of the cover page
' If the cover page is somewhere else,
' set ServerCoverPage=0 and specify the
' full path name of the cover page
.ServerCoverpage = 1
.CoverpageName = ""

' The following items may be used in the coverpage
' or they may be displayed in fax service status
' dialog boxes. The items visible in the Win2000
' fax status are indicated by
'** displayed in dialog

.CoverpageNote = ""
.CoverpageSubject = ""
.EmailAddress = ""
.RecipientAddress = ""
.RecipientCity = ""
.RecipientCompany = ""
.RecipientCountry = ""
.RecipientDepartment = ""
.RecipientHomePhone = ""
'** displayed in dialog
.RecipientName = ""
.RecipientOffice = ""
.RecipientOfficePhone = ""
.RecipientState = ""
.RecipientTitle = ""
.RecipientZip = ""
.SenderAddress = ""
'** displayed in dialog
.SenderCompany = ""
'** displayed in dialog
.SenderDepartment = ""
.SenderFax = ""
.SenderHomePhone = ""
'** displayed in dialog
.SenderName = ""
.SenderOffice = ""
.SenderOfficePhone = ""
.SenderTitle = ""

'** displayed in dialog
.BillingCode = ""

' DiscountSend = 0 means "send immediately
' If you have set up discount periods, setting
' DiscountSend to a nonzero value will make the
' fax service send in a discount period
.DiscountSend = 0

' In theory, the TSID is the Fax sender ID printed
' on the fax, i.e. typically your contact fax number,
' but the value set up in the fax service appears to
' override any value set here.
'.Tsid = ""
End With

' Now send the thing. We don't actually do anything
' with the ID except check it is nonzero

lJobID = oFaxDoc.Send()
Set oFaxDoc = Nothing
End If
End If
' move to the next record
lSourceRecord = lSourceRecord + 1
Loop
End With

' All done. Restore the previous printer
' if necessary. You may need to tweak this
If Left(sActivePrinter, 3) <> sFaxPrinter Then
oApp.ActivePrinter = sActivePrinter
End If

Set oDataFields = Nothing
Set oMerge = Nothing
Set oDoc = Nothing

'Set oApp = Nothing

End If

If bFaxServerAvailable Then
oFaxServer.Disconnect
Set oFaxServer = Nothing
End If

End Sub
 
P

Peter Hewett

Hi Belinda

You can in fact pass arbitrary parameters to Word. You just have to grab the command line
(using Windows API functions) and parse it yourself. Just make sure that if you are
passing in switches (/something) that they don't conflict with the ones already used by
Word.

Most of the organisations I work for use Fax gateways. These appear to Word as printer
drivers, so using them is trivial. Normally just plonk the Fax number in the document
header and the Fax gateway uses and strips the number.

Beware of Peter Jamiesons caveat about <running Office applications in an unattended
server environment>. Word is designed as a *single* instance application/component. You
can do it (I've developed software for a client that uses Word from a System Service) but
you must be very careful. Word can exhibit some stability problem so they way I use it is
to instantiate and then dispose of Word for each document I need to process. I realise
that this is not feasible with a mail merge but try to keep as close to this philosophy as
you can - the application will be more stable.

HTH + Cheers - Peter


First, be advised that Microsoft does not recommend running Office
applications in an unattended server environment - there's a KB article on
this subject but I don't have the number to hand.

Second, I don't think there is a way to pass an arbitrary set of parameters
to Word via the command line - if you have to use a command line, you can
basically pass a document name and use the /m switch followed the name of a
macro to run. You may be able to do more if you have Word 2003 using the /p
switch to load an XML file but I suspect not.

Since doing a merge to fax from Word brings its own set of problems,
personally, I'd aim to use a Word macro anyway to generate the faxes rather
than relying on the built-in merge to e-mail facilities - see the macro code
below.

To avoid the command line problem, what /I/ would probably do is set up a
table in SQL server that contained any information needed to run the merge
that you can't pass through the comand line - e.g., in this case, the name
of the table you want to merge. You can use e.g. ADO in your VB macro to get
the data from SQL Server.

As for the fax production side to this, here's my usual spiel:

For Windows XP/Word 2003, the only "offical" way to merge to fax is to
have
the full Outlook (not Outlook Express) and merge to e-mail - see e.g.

http://support.microsoft.com/default.aspx?scid=kb;EN-US;289532

However,
a. the "Merge to fax" button/option is never enabled in Word 2003
b. although it is possible to enable the button, Word actually uses
exactly the same method to send a fax (i.e. via MAPI/Outlook) as it uses to
send
an e-mail. The only difference is that you see a slightly different Word
dialog box for setting up the fax.
c. Office 2003 has introduced support for faxing to "Internet fax
services" such as Venali. If you want to go that route, as things stand I
think your
only option is to go the merge-to-e-mail route. I have no experience of
merging to these new fax
services with the production version of Word 2003.
d. however, as far as I know, if you have any images in your fax, faxing
via "merge to e-mail" will not format your document correctly (it's the
step that renders the e-mail into fax format that goes wrong).

If you really want to enable the merge to fax button, you need to create a
file called msmail.ini in your Windows directory (or WINNT
directory or whatever) with at least the following lines:

[EFAX Transport]
LocalFax=1

If you want to merge to a faxmodem rather than an Internet fax service,
and your merge is fairly simple (one fax for each record in the data source)
you could try the following macro.

If you're going to try it, please read the notes, modify the macro to suit
your needs, and test it (a couple of other people have used the macro
successfully with various versions of Word and Windows)

If you're unfamiliar with VBA etc. getting this to work could be quite
difficult. A useful starting point is the Word MVPs site at
http://www.mvps.org/word , and specifically the following
"get-you-started" article

http://www.mvps.org/word/FAQs/MacrosVBA/CreateAMacro.htm


The macro code:

'-----------------------------------------------------
Sub MergeOneFaxPerSourceRec()

' Disclaimer: Use this macro at your own risk.
' Purpose: Perform one Word mailmerge for each record in
' a Word data source, sending the results of each
' merge to a different fax number specified in a
' column of the data source
' Author: Peter J Jamieson
' Date: November 2003
' Assumes: Word 2000 or later (Word 97 might work)
' Windows 2000 or later, with the standard
' fax service software installed and
' configured to use a working fax device
' You have used Tools|References in the VBA
' editor to add the appropriate type library
' ("Faxcom 1.0 Type Library")
' You correctly adapt the macro to your
' environment
' Overview: The routine performs one merge per record
' in the data source. For each merge, the macro:
' - creates a new Word document
' - "prints" the document to the Fax printer,
' but outputting the result to a .tif file
' rather than allowing the fax printer to
' send the fax directly. This allows us to
' specify the fax number etc. in the macro
' rather than having to respond to the fax
' printer's dialog box.
' - submits the tif file to the fax service
' - discards the Word document
'
' Notes: This does not use the Extended Fax client API
' because it is not available in Windows 2000.
'
' This macro relies on the fax service to deliver
' the faxes once trhey have been submitted. You
' should use the fax service to verify which faxes
' have been sent and which, if any, failed. The fax
' service should retain a copy of each fax submitted
' so that retransmission should be feasible from
' within the service, i.e. without re-running the
' merge.

' NB, needs bettor error management and doubtless other
' things a VBA expert would point out.

' Specify the path for the .tif files saved by the Fax Printer
' This path must exist and the name should end with "\"
Const sTifFolder = "c:\tif\"
' Specify the name of the .tif file to output
Const sTifFile = "mergetif.tif"
' Specify the fax printer name that makes it all work
Const sFaxPrinter = "Fax"

Dim bFaxPortAvailable As Boolean
Dim bFaxServerAvailable As Boolean

Dim bTerminateMerge As Boolean

Dim lJobID As Long
Dim lSourceRecord As Long

Dim oApp As Word.Application
Dim oDataFields As Word.MailMergeDataFields
Dim oDoc As Word.Document
Dim oFaxDoc As FAXCOMLib.FaxDoc
Dim oFaxPort As FAXCOMLib.FaxPort
Dim oFaxPorts As FAXCOMLib.FaxPorts
Dim oFaxServer As FAXCOMLib.FaxServer
Dim oMerge As Word.MailMerge

Dim sActivePrinter As String
Dim sTifPath As String

' Phase 1.
' Connect to the Fax server
' and optionally see if a Port is available

Set oFaxServer = CreateObject("FaxServer.FaxServer")

If oFaxServer Is Nothing Then
MsgBox "Could not create a fax server object"
bFaxServerAvailable = False
Else
' This should connect us to the fax server on the current machine
oFaxServer.Connect Servername:=Environ("computername")
bFaxServerAvailable = True
bFaxPortAvailable = True

' begin optional section
' - ensure that at least one output port is available
' - not essential but we will just see an error later
' if no output port is available
Set oFaxPorts = oFaxServer.GetPorts
If oFaxPorts.Count = 0 Then
MsgBox "The fax server has no fax devices"
bFaxPortAvailable = False
Else
' look for a port that can send
For i = 1 To oFaxPorts.Count
Set oFaxPort = oFaxPorts.Item(i)
If oFaxPort.Send = 0 Then
Set oFaxPort = Nothing
Else
Exit For
End If
Next
If oFaxPort Is Nothing Then
MsgBox "The fax server has no ports configured to send faxes"
bFaxPortAvailable = False
Else
' at the moment we do not use the FaxPort object to get status
' info. so just get rid of it
Set oFaxPort = Nothing
End If
End If
' we do not need this either
Set oFaxPorts = Nothing
' end optional section

End If

' Phase 2.
' We can fax, so set up the printer
' and start the merges.

If bFaxServerAvailable And bFaxPortAvailable Then

' You may need to change this
Set oApp = Application

' The mail merge main document is assumed
' to be the active document in the current
' instance of Word
Set oDoc = oApp.ActiveDocument
Set oMerge = oDoc.MailMerge
Set oDataFields = oMerge.DataSource.DataFields

' save and set up the active printer
sActivePrinter = oApp.ActivePrinter
' don't change the printer if it is already
' correctly set up
' (I had problems when I tried to switch
' to the fax printer in code)
' you may need to adjust this for your
' fax printer name
If Left(sActivePrinter, 3) <> sFaxPrinter Then
oApp.ActivePrinter = sFaxPrinter
End If

With oMerge

' If no data source has been defined,
' do it here using OpenDataSource.
' But if it is already defined in the document,
' you should not need to define it here.

' .OpenDataSource _
' Name:="whatever"

lSourceRecord = 1
bTerminateMerge = False

Do Until bTerminateMerge
.DataSource.ActiveRecord = lSourceRecord

' if we have gone past the end
' (and possibly, if there are no records)
' then the Activerecord will not be what
' we have just tried to set it to

If .DataSource.ActiveRecord <> lSourceRecord Then
bTerminateMerge = True
Else
.DataSource.FirstRecord = lSourceRecord
.DataSource.LastRecord = lSourceRecord
.Destination = wdSendToNewDocument
.Execute

' Word always sets the output document produced
' by the merge to be the ActiveDocument

' Now print to the fax printer, specifying an
' OutputFileName.
' Specifying Background:=False is
' particularly important or the fax stage
' will fail later

' create the full path name for the file.
' (done separately so you can change the way
' you create the name and re-use the name later)

sTifPath = sTifFolder + sTifFile
oApp.PrintOut _
Background:=False, _
Append:=False, _
Range:=wdPrintAllDocument, _
OutputFileName:=sTifPath, _
Item:=wdPrintDocumentContent, _
Copies:=1, _
PageType:=wdPrintAllPages, _
PrintToFile:=True

' Don't need the document any more
oApp.ActiveDocument.Close Savechanges:=False

' Now make a FaxDocument
Set oFaxDoc = oFaxServer.CreateDocument(sTifPath)
If oFaxDoc Is Nothing Then
MsgBox "Could not create the fax document"
' you could consider finishing here by setting
' TerminateMerge = True
Else
' fill in whatever details you need
' from the data source or elsewhere
With oFaxDoc
' The number to send to. The only really essential
' piece of information. Here we get it from
' a field in the data source called "faxnumber"
.FaxNumber = oDataFields("faxnumber")

' DisplayName is a "user-friendly" name used
' by the Fax Server when you e.g. inspect the
' current fax status

' here we get it from a field in the data source
' called ufname
.DisplayName = oDataFields("ufname")
' here we just set it to ""
'.DisplayName = ""

' If you want a cover page, set SendCoverPage
' to a nonzero value. You could define whether
' or not you want a cover page, and which
' page to use, in your data source. However,
' if you specify a cover page, you /must/
' provide a valid name for the page. This code
' does not verify whether you do or not.
.SendCoverpage = 0

' If the cover page (.cov file) is a common
' cover page located on the server (i.e. in the
' default folder), set ServerCoverPage=-1
' and provide the name of the cover page
' If the cover page is somewhere else,
' set ServerCoverPage=0 and specify the
' full path name of the cover page
.ServerCoverpage = 1
.CoverpageName = ""

' The following items may be used in the coverpage
' or they may be displayed in fax service status
' dialog boxes. The items visible in the Win2000
' fax status are indicated by
'** displayed in dialog

.CoverpageNote = ""
.CoverpageSubject = ""
.EmailAddress = ""
.RecipientAddress = ""
.RecipientCity = ""
.RecipientCompany = ""
.RecipientCountry = ""
.RecipientDepartment = ""
.RecipientHomePhone = ""
'** displayed in dialog
.RecipientName = ""
.RecipientOffice = ""
.RecipientOfficePhone = ""
.RecipientState = ""
.RecipientTitle = ""
.RecipientZip = ""
.SenderAddress = ""
'** displayed in dialog
.SenderCompany = ""
'** displayed in dialog
.SenderDepartment = ""
.SenderFax = ""
.SenderHomePhone = ""
'** displayed in dialog
.SenderName = ""
.SenderOffice = ""
.SenderOfficePhone = ""
.SenderTitle = ""

'** displayed in dialog
.BillingCode = ""

' DiscountSend = 0 means "send immediately
' If you have set up discount periods, setting
' DiscountSend to a nonzero value will make the
' fax service send in a discount period
.DiscountSend = 0

' In theory, the TSID is the Fax sender ID printed
' on the fax, i.e. typically your contact fax number,
' but the value set up in the fax service appears to
' override any value set here.
'.Tsid = ""
End With

' Now send the thing. We don't actually do anything
' with the ID except check it is nonzero

lJobID = oFaxDoc.Send()
Set oFaxDoc = Nothing
End If
End If
' move to the next record
lSourceRecord = lSourceRecord + 1
Loop
End With

' All done. Restore the previous printer
' if necessary. You may need to tweak this
If Left(sActivePrinter, 3) <> sFaxPrinter Then
oApp.ActivePrinter = sActivePrinter
End If

Set oDataFields = Nothing
Set oMerge = Nothing
Set oDoc = Nothing

'Set oApp = Nothing

End If

If bFaxServerAvailable Then
oFaxServer.Disconnect
Set oFaxServer = Nothing
End If

End Sub

--
Peter Jamieson

Belinda said:
Hello All

I have the following requirement:

- I have a standard template document
I have a table in SQL Server that as some information like address,
name and fax # I want this to be substituted into this word template
and the documents must be generated to be sent by fax. I want the
resultant mail merged document generated by word to be faxed.

Please advise what is the best way to implement this scenario.

In brief I want to create a template word file and a seperate data
table this must be mail merged and resultant output documents
generated. I want to fax these documents to the receipients.

Please note I would like to start word from command line and pass the
template file and the mail merge list as well. I would like to call
word from SQL Server DTS tasks so only way I can do it is by calling
it in batch mode.

Please provide the command line syntax to invoke word and pass these
arguments
to generate a fax from word. Also what is the best fax solution for
word.

Thanks
Belinda
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top