引用:
このメールに、入力フォーム内の、添付ファイル型のフィールドに追加したファイルを自動添付する方法はないでしょうか?
添付ファイル型にファイル追加する際、元のファイルのパスを取得してコピーする、なども考えましたが、難しくてコードを書けません…
SenObject メソッド を使う場合には、
添付ファイル型に入っているファイルではなく
添付ファイル型のフィールドに入れる 前 のデータファイルを指定しますから・・
すでに回答がされていますが 直接 の方法はありません。
A】ファイル添付型/OLEオブジェクト型の場合
1. 一度、どこかに保存
2. 保存したファイルのフルパスを指定する
の流れになります。
フィールド に追加する前のファイルのフルパスが判っているなら
ファイルを保存する 手間が無い分、ラクです。
ただ、既に入力されたレコードの 添付ファイルを添付する際には、
結局、添付ファイル型フィールドのデータを、一旦ファイルを保存するする必要があります。
そうではなく、元々、添付ファイル型のフィールドに保存するのではなく
B】テキスト型のフィールドに、元々のファイルのフルパスを保存する方法
もあります。
それであれば、そのフルパスをtaitani さんが紹介されているコード中の
Attachmentsオブジェクトに渡せます。
ただし、レコードとして保存されているのはパスだけなので、
そのパスのファイルが見つからなかった時の処理が必要です。
それぞれメリット・デメリットがあります
フィールドにファイルを保存
1)ファイルをそのものを保存しているので、フィールドに対しファイルを保存した後に
元のファイルを改変等を行っても、その影響を受けない
2)ファイルそのものを保存するので、ファイルパスの影響を受けない
(accbdファイルをファイルサーバー等、共有に置くとき
ファイルパス保存の際に、ローカルパスを保存すると、ファイルを参照できない)
3)ファイルそのものを保存するので、accdbファイルの容量が大きくなる
(ファイルサイズ 2GB、テーブルサイズ2GBの制限に注意が必要)
4)添付ファイル型の場合、1レコード、1フィールドに 複数のファイルを保存できる
(・添付ファイル保存用の別テーブルを用意し、リレーションを張る事で
1レコードに対し、複数ファイル/ファイルパスを 保存できる
・テキスト型のフィールドに、特定文字を区切り文字として、複数パスを保存する
で、対応は可能)
フィールドにパスを保存 の場合は逆になります。
何にしても、 Attachmentsオブジェクト に「パス」を渡すのに変わりはありません。