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

執筆者:

関連記事

no image

サブフォームで苦労

Access覚書。 サブフォームつきのフォームからダイアログ・フォームを呼び出す。 ダイアログフォームのリスト形式のレコードをクリックしたら、呼び出し元のフォームのサブフォームに値を追加して、次のため …

no image

Accessで複数の用紙サイズ・向きの帳票を印刷したいが2枚出るとか、思ったようにならないなら

私がAccessで作った会社の業務管理システムは、帳票類がほとんどA4縦の用紙で出力されるようになっている。 しかし、一部の帳票、というか封筒は、長三サイズと、角6サイズをの用紙にしないと、プリントが …

no image

AccessのDoCmd.OpenForm acPreviewでデータが表示されない

なぜか、フォームに新規データを入力し、印刷プレビュー(DoCmd.OpenForm “見積請求書F”, acPreview)した際に、それまで入力したデータが消えたようになる。 …

no image

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

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

no image

AccessのBeforeUpdateでUndo

BeforeUpdateプロシージャ内の処理で、Cancel = Trueとしたら更新がキャンセルされるところまではできたが、テキストボックスにNullを代入しようとしてエラーが出たりして、間違って入 …