- ベストアンサー
【Excel】 VBAを使って毎回名前が変わるファイルを添付してメール送信したい。
こんにちは。 以前、このような質問があり、 自分でもこれを元にプログラムを書いてみました。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1652780 問題は、添付するファイルの名前が変わるので どうすれば毎回変化する名前のファイルが きちんと添付できるかというのが質問です。 アスタリスク(*)はVBAでは使えないとのこと。 正規表現?というのを使用するのでしょうか? ※下のAttFile = "D:\教えて01.txt"を例にすると「教えて02,教えて03・・・」と 毎回ファイル名が変わるものとして下に書きました。 ここの記述はどのようにすればよいのでしょうか? 環境はWindowsXP Office2003 BASP21というのを使用しています。 Sub SendMail() Dim B21Obj, MailContents Dim Server, Mailto, MailFrom, Title, Body, AttFile If Range("A1") = "" Then GoTo Fin If Range("A2") = "" Then GoTo Fin If Range("A3") = "" Then GoTo Fin Set B21Obj = CreateObject("basp21") Server = "***.***.com" 'サーバー名(ご自分のSMTPサーバーに書換え) Mailto = Range("A1").Value & vbTab & "bcc" & vbTab & "***@***.ne.jp" '宛先 MailFrom = "***@***.com" '差出し人(ご自分のメールアドレスに書換え) Title = Range("A2").Value 'タイトル Body = Range("A3").Value '本文 AttFile = "D:\教えて01.txt" '添付書(01,02,03・・・と毎回変わります) MailContents = B21Obj.SendMail(Server, Mailto, MailFrom, Title, Body, AttFile) Fin: Set B21Obj = Nothing Range("A1").Select End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>どのように組み込むか 単純に・・・ Sub SendMail() : AttFile = "D:\教えて" & Format(Now(), "yymmdd") & Format(Range("L10").Value) & ".txt" Name "D:\教えて01.txt" As AttFile : End Sub
その他の回答 (2)
- papayuka
- ベストアンサー率45% (1388/3066)
単純に 01 部分を指定したいなら、そこを変数にするだけです。 Sub Test1() Dim myNum myNum = Application.InputBox("D:\教えて?.txt", "指定", Type:=2) If myNum <> False Then MsgBox "D:\教えて" & myNum & ".txt" End Sub やはりファイルを選ばせるのが普通でしょうか、、、 Sub Test2() Dim fName ChDrive "D:\": ChDir "D:\" fName = Application.GetOpenFilename("テキスト ファイル (*.txt), *.txt") If fName <> False Then MsgBox "選択されたファイル: " & fName End Sub
お礼
papayuka様 ご回答ありがとうございました。 test2は理想的です! 元のSub SendMail()に どのように組み込むか ご教授願えないでしょうか? よろしくお願いいたします!!
- hana-hana3
- ベストアンサー率31% (4940/15541)
>どうすれば毎回変化する名前のファイルがきちんと添付できるかというのが質問です 毎回変化する理由は? 変化したファイル名を取得する手段は? 等、ファイル名を取得できるタイミング(方法)の有無。 ファイル名の取得には、 1.DIR関数でフォルダの全ファイル名を取得 2.ファイルダイアログでファイルの選択 3.セルに記述 など、いくつかの手段があります。
補足
hana-hana3様 早速のご回答ありがとうございました! >毎回変化する理由は? >変化したファイル名を取得する手段は? 具体的には下のようなものを先に書いて、あえてファイル名を変えてから、メール送信をしたいと考えています。 Sub rename() Name "D:\教えて01.txt" As "D:\教えて" & Format(Now(), "yymmdd") & Format(Range("L10").Value) & ".txt" End Sub 恐れ入りますが、 よろしくお願いいたします。
お礼
hana-hana3様! 昨日につづきご回答ありがとうございました! 動作も上手くいきました!! この4月より会社で部署が変わり このVBAをやることになりまして・・・ VBA歴10日余り・・・ この感謝を忘れません! 皆様ありがとうございました!