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
サンプルは下記にあります:この部分だけなら無料でダウンロードできます。
0 件のコメント :
コメントを投稿