ACCESS2010でWordの文書を置換しながらFAX送信

FAXでダイレクトメールを送ろうと思い、色々と調べてみた。
調べてところ、「DoCmd.SendObject acReport」を利用する方法が見つかった。

http://support.microsoft.com/kb/145787/ja

早速、作ってみたが意外と大変
サンプルのとおり

「DoCmd.SendObject acReport,"Invoice",acFormatRTF, _」
でリッチテキスト方式で送信すると、画像が入ってこない。

そこで、acFormatRTFをacFormatPDFと変更しPDFファイルとして送信したところ画像も問題ない。
まー使えないことはないかなという感じ。

しかし、この方式には大きな欠点があった。
ACCESSのレポートを作成しなくては、FAX送信出来ない(当たり前かw)
実は、原稿はWORDとかで作ることが多いので、その後ACCESSのレポートに貼り付けたりするわけだが、余白やらなんやらと結構イライラさせられた。

再度色々調べてみたところ、
「faxcom 1.0 Type Library」というページを発見した。

http://www.vbstation.net/spec/S7.htm

早速テストしてみたところ、なんかいい感じ。
しかも、SendObjectと違いOutlookを経由しないので面倒なOutlookの設定がいらない。
もしや、Word文書も送れるんじゃないかな?と早速テスト。。。問題ない^^;

あとは、「差し込み」だなと色々考えていると、「差し込み」って文字置換だよね?と閃く
で、Wordのマクロで文字置換を記録してっと
それをACCESSに埋め込み若干の修正

というわけで出来上がったのが、以下の通り

まず、フォームの作成
続いて、モジュールで参照設定
「faxcom 1.0 Type Library」と「Microsoft Word ××× Object Library」にチェック
※文字置換しないならWordは要らない

で、モジュール部分

Private Sub cmdFAX送信_Click()
    Dim rstCustomers As dao.Recordset
    Dim I As Integer
    Dim wNewWordName As String, dotPosition As Integer
    
    Set rstCustomers = Me.F_FAX送信リスト.Form.RecordsetClone
    rstCustomers.MoveFirst

    If MsgBox("FAX送信しますか", vbOKCancel) = vbOK Then
        Do Until rstCustomers.EOF
            dotPosition = LastInstr(Me.Wordファイル名, ".")
            wNewWordName = Left(Me.Wordファイル名, dotPosition - 1) & rstCustomers!No & Right(Me.Wordファイル名, Len(Me.Wordファイル名) - dotPosition + 1)

            For I = 1 To 4
                If Not IsNull(Me("置き換え" & Format(I))) Then
                    Call EditWordDoc(IIf(I = 1, Me.Wordファイル名, wNewWordName), wNewWordName, Me("置き換え" & Format(I)), rstCustomers(Me("置き換え後" & Format(I))))
                End If
            Next
            
            If rstCustomers![FAX送信] Then
                Call SendFax(wNewWordName, rstCustomers![FAX番号])
                rstCustomers.Edit
                rstCustomers![FAX送信] = False
                rstCustomers.Update
                rstCustomers.MoveNext
            End If
            
        Loop
    End If
    rstCustomers.Close

End Sub


サンプルは下記にあります:この部分だけなら無料でダウンロードできます。