Microsoft KB Archive/145787

From BetaArchive Wiki

Article ID: 145787

Article Last Modified on 1/19/2007



APPLIES TO

  • Microsoft Access 95 Standard Edition
  • Microsoft Access 97 Standard Edition



This article was previously published under Q145787

Moderate: Requires basic macro, coding, and interoperability skills.


SUMMARY

This article shows you how to create a macro and a Visual Basic procedure to fax a report from Microsoft Access. The examples assume that you have Microsoft Exchange, Microsoft Fax, and a fax modem installed and functioning.

NOTE: If your fax does not appear to have proper formatting, you may want to change your default email editor to Microsoft Word.

This article assumes that you are familiar with Visual Basic for Applications and with creating Microsoft Access applications using the programming tools provided with Microsoft Access. For more information about Visual Basic for Applications, please refer to your version of the "Building Applications with Microsoft Access" manual.

NOTE: This article explains a technique demonstrated in the sample files, RptSampl.exe (for Microsoft Access for Windows 95 version 7.0) and RptSmp97.exe (for Microsoft Access 97). For information about how to obtain these sample files, please see the following articles in the Microsoft Knowledge Base:

145777 ACC95: Microsoft Access Sample Reports Available in Download Center


175072 ACC97: Microsoft Access 97 Sample Reports Available in Download Center


MORE INFORMATION

NOTE: The following code may not work properly if you have installed the Outlook E-mail Security Update. For additional information about this update, please see one of the following articles in the Microsoft Knowledge Base, depending on which version of Outlook you have:

262631 OL2000: Information About the Outlook E-mail Security Update


262617 OL98: Information About the Outlook E-mail Security Update


The following examples use the sample database Northwind.mdb to show you how to create a macro and a Visual Basic procedure to fax a report using Microsoft Fax.

NOTE: When you use the SendObject method within Microsoft Access, you must have a messaging application (for example, Microsoft Exchange), that supports the Microsoft Mail Applications Programming Interface or MAPI.

NOTE: If you have an electronic mail application that uses the Vendor Independent Mail (VIM) protocol and have installed and set up the dynamic- link library (Mapivim.dll) that converts MAPI mail messages to the VIM protocol, you can send Microsoft Access objects to the VIM mail application.

CAUTION: Following the steps in this example will modify the sample database Northwind.mdb. You may want to back up the Northwind.mdb file and perform these steps on a copy of the database.

Creating a Macro

This example uses the SendObject action to fax the Catalog report to a single fax number.

  1. Open the sample database Northwind.mdb.
  2. Open the Catalog report in Design view.
  3. On the File menu, click Page Setup.
  4. In the Page Setup box, click the Page tab.
  5. In the Printer For Catalog box, click Use Specific Printer, and then click the Printer button.
  6. In the Name box, select Microsoft Fax, and then click OK.
  7. In the Page Setup box, click OK.
  8. Save the Catalog report and close it.
  9. Create the following macro named SendFax:

           Macro Name   Action
           ------------------------
           SendFax      SendObject
    
           SendFax Actions
           -------------------------------------------------------------------
           SendObject
              Type         : Report
              Object Name  : Catalog
              Output Format: Rich Text Format
              To:          : [Fax: ###-####] (where ###-#### is the fax number)
                        
  10. Run the macro to fax the report.

Creating a Visual Basic Procedure

This example shows you how to fax the Invoice report to each customer in the Customers table.

  1. Open the sample database Northwind.mdb.
  2. Open the Invoice report in Design view.
  3. On the File menu, click Page Setup.
  4. In the Page Setup Box, click the Page tab.
  5. In the Printer For Invoice box, click Use Specific Printer, and then click the Printer button.
  6. In the Name box, select Microsoft Fax, and then click OK.
  7. In the Page Setup box, click OK.
  8. Set the report's OnOpen property to the following event procedure:

    Me.Filter = strInvoiceWhere
                        
  9. Save the report and close it.
  10. In the Database window, click the Modules tab, and then click New.
  11. Type or paste the following code into the module:

           Option Explicit
           Public strInvoiceWhere As String
    
           ' ****************************************************************
           ' This function will walk through the Customers table and fax the
           ' Invoice report, which is filtered by the CustomerID field using
           ' MS Fax through the MS Access SendObject.
           ' This function assumes the Invoice report has the default
           ' printer set to MS Fax and the MS Fax driver is installed
           ' correctly.
           ' ****************************************************************
    
           Function FaxInvoices()
    
           Dim dbsNorthwind As DATABASE
           Dim rstCustomers As Recordset
    
           Set dbsNorthwind = CurrentDb()
           Set _
           rstCustomers = dbsNorthwind.OpenRecordset("Customers",dbOpenDynaset)
    
           If MsgBox("Do you want to fax invoices" & Chr(13) & _
              "to all customers using Microsoft Fax?", 4) = 6 Then
              With rstCustomers
              Do Until .EOF
                 ' Create the Invoice report Filter used by the Report_Open
                 ' event.
                 strInvoiceWhere = "[CustomerID] = '" & ![CustomerID] & "'"
                  DoCmd.SendObject acReport,"Invoice",acFormatRTF, _
                     "[fax: " & ![fax] & "]", , , , , False
                  .MoveNext
              Loop
              End With
           End If
           rstCustomers.Close
           End Function
                        
  12. To test this function, type the following line in the Debug window, and then press ENTER:

     ? FaxInvoices()

To improve performance, you can choose to delay faxing until an appropriate time, and you can also change the rendering engine. Rich Text Format (RTF) messages sent to Microsoft Fax need to be rendered. The rendering process uses the application associated with .rtf documents. If, for example, you have installed Microsoft Word 7.0, that is the rendering application. Microsoft WordPad is a smaller and faster application. If you want to send many fax documents, you might consider changing the .rtf association from Microsoft Word 7.0 to WordPad.

To change the association for .rtf documents to WordPad, follow these steps:

  1. Click Start, and then click Run.
  2. In the Open box, type "winfile" (without the quotation marks), and then click OK.
  3. In File Manager, on the File menu, click Associate.
  4. In the Associate box, under File With Extension, type rtf.
  5. Click Browse.
  6. Locate WordPad.Exe in C:\Program Files\Accessories, and then click OK.
  7. Quit File Manager.

To change the time to send a fax, follow these steps:

  1. Click Start, point to Settings, and then click Control Panel.
  2. Double-click the Mail And Fax icon.
  3. In "The following information services are set up in this profile" box, select Microsoft Fax, and then click Properties.
  4. In the Time To Send box, select Specific Time, type a time in the Time box, and then click OK.
  5. Close the Mail And Fax box.


REFERENCES

For more information about SendObject, search the Help Index for "SendObject Action."

For more information about OutputTo, search the Help Index for "OutputTo."

For more information about FindFirst, search the Help Index for "FindFirst Method."

Keywords: kbhowto kbprogramming KB145787