MS Access

Accessで1件ずつレコードを読んでスナップショットファイルを作ってメール送信する処理

投稿日:2011年4月6日 更新日:

作るのにWebに情報が無くてすごく苦労したので備忘録。
私にしかわからないかもしれないけど、見た人も何か参考になるかもしれないから、公開しよっと。

■事前準備
1.処理を起動するフォームにボタン「調査票メール送信」を作成。
2.同フォームにテキストボックス「fax」を作成。
3.レポート「調査票FAX」を新規作成。

■レポートに書くコード
Me.RecordSource = "SELECT * FROM XXXX実施調査票 WHERE (((番号)=[Forms]![オープニングフォーム]![fax]));"

■フォームに書くコード
Private Sub 調査票メール送信_Click()
Dim MyDB As Database
Dim MyRS As Recordset
Set MyDB = CurrentDb
Set MyRS = MyDB.OpenRecordset("SELECT * FROM Excelスケジュール WHERE (((月) like '" & Me.cbo調査対象 & "*'));", dbOpenDynaset)
'**** FAX番号存在チェック ***
Do Until MyRS.EOF
If MyRS!FAX <> "" Then
Else
r = MsgBox(MyRS!番号 & " " & MyRS![XXXX名] & "にFAX番号がありません。続行しますか?", vbYesNo)
If r = vbNo Then Exit Sub
End If
MyRS.MoveNext
Loop
'**** メイン処理 ***
MyRS.MoveFirst
Do Until MyRS.EOF
' Debug.Print MyRS!番号
If MyRS!FAX <> "" Then
Me.FAX = MyRS!番号
DoCmd.OutputTo acOutputReport, "調査票FAX", acFormatSNP, "C:\Windows\Temp\fax" & MyRS!番号 & ".snp"
DoCmd.SendObject acSendReport, _
"調査票FAX", _
"Snapshot 形式 (*.snp)", _
"xx@abc.com", _
"", _
"", _
"調査票", _
"調査票を送付します。", False
Else
MsgBox MyRS!番号 & " " & MyRS![XXXX名] & "にFAX番号がありません"
End If
MyRS.MoveNext
Loop
MyRS.Close
End Sub

-MS Access

執筆者:

関連記事

Office365にはSharePointリストという表データが保存できる機能がありAccessのリンクテーブルにできる

Office365では、AccessのWebアプリを作れる。 それで今、勉強しているのだが、Office365にはSharePointリストという表データが保存でき、それをAccessのリンクテーブル …

no image

AccessのレポートでNoDataでイベントキャンセル後もReport_Closeが実行されて困った

Accessのレポートで表示するデータがない場合は、以下のように書けばスマートにキャンセルできる。 Private Sub Report_NoData(Cancel As Integer) MsgBo …

no image

客先で動かしているAccessとFAXの連携システムが昨日から止まっている

これまでのWindowsXP+OutlookExpressであれば問題なかった。 しかし、OSはWindows7になってしまい、メールはWindowsLiveメールになってしまった。 そしてWindo …

no image

Accessでレポートを印刷したいのにフォームが印刷されるトラブル

現象:全てではなく特定のPCで、チェックリストを出力しようとすると、バックで開いているフォームがプリントされる。 毎回起きるトラブルではなく、うまく出るときもある。 最初の対策:以下のブログを参考に、 …

no image

Accessのフォームでテキストボックスに入れた値を次回オープン時の既定値として自身に保存するには

ちょっとだけ苦労した。 次回もきっと使うことがあるだろうから、メモメモ。 現在の値を変数に入れておく(これをしておかないと、次の処理でデザインビューに切り替わるために入力した値も消える)。 フォームを …