• 締切済み

EXCELVBA メール送信について

EXCELVBAで加工したデータをメールに添付して送信するツールを作成したいのですが、送信後保存ファイルを削除したい場合の方法分からす困っています。自身(?)を削除する事になるのでうまく動作しません。何方か良い方法があったらご指導を頂けないでしょうか? 宜しくお願いします。 Sub MailSend() Dim app As Object Dim objml As Object Dim moji As String Set app = CreateObject("Outlook.Application") Set objml = app.CreateItem(0) moji = "ご査収ください" objml.To = "xxxx@xxx.xxx.or.jp" '宛先 objml.Subject = "TEST" '件名 objml.Body = moji '本文の代入 objml.Attachments.Add "D:\My Documents\TEST.xls" objml.Send '送信   kill(TEST.xls) →※この部分がどのように処理して良いか分かりません End Sub

みんなの回答

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

コードの書かれた開いてるファイル自身を消滅させるマクロの例です。 ご参考まで。 Sub Kill_Me() Dim i As Integer MsgBox "今から自動消滅します。" With ThisWorkbook .Save For i = 1 To Application.RecentFiles.Count If Application.RecentFiles(i).Path = .FullName Then Application.RecentFiles(i).Delete Exit For End If Next .ChangeFileAccess Mode:=xlReadOnly Kill .FullName .Close SaveChanges:=False End With End Sub

mika0090
質問者

お礼

ご指導ありがとうございました。メール送信後教えて頂いたファイル自身を削除するコードを追加して上手く動作しました。こんなこと出来るんですね。。勉強になりました。

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.2

開いてるファイルの削除自体不可能です、一旦ファイルを閉じる必要がありますので、自分自身の削除はそのブック内のマクロでは行えません。

  • xfiles
  • ベストアンサー率23% (164/693)
回答No.1

別のプロージャへ飛ばして、そこから削除すればどうでしょう。 「自身(?)を削除する事になるのでうまく動作しません。」なのだから、単純に外部のプロージャで削除出来ないかと思ったわけです。 なお、今検証できる環境にないのでこんな回答しか出来ません。

関連するQ&A

  • 初心者ですが、Excelファイル(AAA.xls)の、A1セルの情報を

    初心者ですが、Excelファイル(AAA.xls)の、A1セルの情報を Outlookの本文に入力したいと思っています。 そこで、下記プログラムを組んだのですが、間違いだらけのようで 起動しません。どなたか教えていただけませんか? Sub メール自動送信() Dim my01App As Outlook.Application Dim mymail As Outlook.MailItem Dim body As String Set my01App = CreateObject("Outlook.Application") Set tgtdb = CreateObject("Excel.Application") Set mymail = my01App.CreateItem(olMailItem) With mymail mymail.body = "C:\Users\tomohide\Desktop\AAAA.xls".cells(1,1) End With mymail.Display End Sub

  • Const に dim は使えない?

    標準モジュールに ''''''''''''''''''''''''''''''''''''''''''' Dim Const moji As String = "a" Sub test1() MsgBox moji End Sub Sub test2() Dim Const moji As String = "a" MsgBox moji End Sub ''''''''''''''''''''''''''''''''''''''''''' とするとエラーになりますが ''''''''''''''''''''''''''''''''''''''''''' Public Const moji As String = "a" Sub test3() MsgBox moji End Sub ''''''''''''''''''''''''''''''''''''''''''' なら大丈夫です。 Const に対してdimは使えないのでしょうか?

  • CreateObjectとGetObjectの違い

    当方エクセル2003です。 Sub test_CreateObject() Dim App As Excel.Application Dim MyFileName As String Set App = CreateObject("Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub --------------------------------------------------------- Sub test_GetObject() Dim App As Excel.Application Dim MyFileName As String Set App = GetObject(, "Excel.Application") MyFileName = ActiveWorkbook.Path & "\新規Microsoft Excel ワークシート.xls" With App .Workbooks.Open FileName:=MyFileName .Visible = True End With Set App = Nothing End Sub この二つは何が違うのでしょうか? どちらも既存のエクセルファイルがが開きます。

  • ACCESS CreateObjectを使ったMail送信の添付ファイル名

    ACCESSからOutlookのMailを送信したいと思っています。 ------------------------ Dim myOL As Object Dim myMail As Object Set myOL = CreateObject("Outlook.Application") Set myMail = myOL.CreateItem(0) myMail.SentOnBehalfOfName = "" myMail.To = "" myMail.Cc = "" myMail.BCc = "" myMail.Subject = "" myMail.Attachments.Add ("") myMail.Body = "" myMail.Display ------------------------------ そこで、添付したいファイルのフルパスをフォーム上に入力し、 都度それを上の記述に反映したいと思います。 例)me.添付ファイル名 myMail.Attachments.Add ("& me.添付ファイル名 &") でも myMail.Attachments.Add (" me.添付ファイル名 ") でも エラーになってしまいます。 引き続きいろんなパタンを試してみますが、 お分かりになる方、教えて下さい!! (”や’に弱いんです・・・。)

  • アクセスからアウトルックでメールを送りたい

    アクセスからアウトルックでメールを送るために調べたのですが 新しいメッセージを作ってメールを送信するところまではできたのですが 送信ボタンを押下しても、どうやらアウトルックが開いてないと送信できないことがわかりました。 アウトルックは常に立ち上げていません。 なので下記のコードに、アウトルックを立ち上げるコードを入れたのですが わからないので教えていただけますか? Sub メール送信() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Set OlApp = New Outlook.Application Set mItem = OlApp.CreateItem(olMailItem) With mItem .To = "○○@docomo.ne.jp" .Body = "test" .display End With End Sub アウトルックのバージョンは2007です。ご教授よろしくお願いします。

  • SETを使ったほうがよい?

    accwessからエクセルファイルを開きたいのですが、 App.Workbooks.Open と、 Set xlBook = xlApp.Workbooks.Open とどちらを使った方がいいのでしょうか? ////////////////////////////////////////////////////////// Private Sub ファイル1_Click() Dim App As Object Dim MyFileName As String MyFileName = "D:\My Documents\test.xls" Set App = CreateObject("Excel.Application") App.Workbooks.Open FileName:=MyFileName App.Visible = True End Sub でも Private Sub ファイル2_Click() Dim xlApp As Object Dim xlBook As Object Dim FileName As String Const FolderName = "D:\My Documents\test.xls" Set xlApp = CreateObject("Excel.Application") Set xlBook = xlApp.Workbooks.Open(FolderName & FileName) xlApp.Visible = True Set xlApp = Nothing Set xlBook = Nothing End Sub ////////////////////////////////////////////////////////// でも開けました。 多分、SETを使うかどうかの違いだと思うのですが VBAでコードを作る際、どちらのコードを使った方がいいか教えてください。

  • アクセスVBAでメールを送信(複数宛先・添付)

    vbaを使用しメールを送信しようとしております。 以下に記載のように設定をしておりますが、2点設定の方法がわかりかねております。 大変お手数ですが、ご教示いただければ幸いです。 (1)宛先を複数設定したい場合はどのように設定すればよろしいでしょうか。 別々に送るのではなく、宛先にアドレス1、アドレス2を設定し1通のメールで送信をしたいです。 (2)添付ファイルを複数添付したいのですが、宛先によって添付ファイルの数が異なります。 たとえば、宛先Aには添付ファイルが1,2があるが、Bには添付ファイル1のみであり添付ファイル2フィール付度はNULLです。 この場合、エラーになってしまうのですが、"添付ファイルフィールドがnullでも無視してそのまま送信する"と設定はできるのでしょうか。 --------------------------------------- テーブル名:テーブル1 フィールド:アドレス1、アドレス2、件名、本文、添付ファイル1、添付ファイル2 --------------------------------------- Sub SAMPLE_0216() Dim db As DAO.Database Dim R1 As Recordset Dim AP As Object Dim ML As Object Dim L1 As String Set db = CurrentDb Set R1 = db.OpenRecordset("テーブル1") Set AP = CreateObject("Outlook.Application") R1.MoveFirst Do Until R1.EOF 'メールを作成 Set ML = AP.createitem(0) 'アドレスをセット ML.To = R1!アドレス1 '件名をセット ML.Subject = R1!件名 '本文をセット ML.Body = R1!本文 'ファイルを添付1 L1 = R1!添付ファイル1 ML.Attachments.Add L1 'ファイルを添付2 L1 = R1!添付ファイル2 ML.Attachments.Add L1 'メールを送信 ML.Send R1.MoveNext Loop End Sub ----------------------------------------- どうぞよろしくお願いいたします。

  • AppActivate Appではなぜだめなのでし

    エクセルファイルをvbaで開いて全画面表示したいのですが Sub Sample1() Dim App As Excel.Application Dim xlBook As Workbook Dim MyFileName As String MyFileName = "D:\test.xls" Set App = CreateObject("Excel.Application") Set xlBook = App.Workbooks.Open(MyFileName, ReadOnly:=True) App.Visible = True AppActivate App 'エラー発生 End Sub このコードだと AppActivate Appでエラーが発生します。 たまにシステムの裏側で開いてしまうので 常に前面に持ってこれるようにしたいのですが AppActivate Appではなぜだめなのでしょうか?

  • エクセルVBAでOutlookメールの書式を変える

    エクセル2010です。 下記のようなコードでOutlookメールを作成したとき、たとえば  "ABC株式会社" だけを赤字で太文字にするにはどう書けばよいのでしょうか? Sub TEST001()   Dim oApp As Object   Dim objMAIL As Object   Dim strMOJI(1) As String   On Error Resume Next   Set oApp = GetObject(, "Outlook.Application")   On Error GoTo 0   If oApp Is Nothing Then     Set oApp = CreateObject("Outlook.Application")   End If   Set objMAIL = oApp.CreateItem(0)   strMOJI(0) = "こんにちは!" & vbCrLf & _   "色付けテストです。" & vbCrLf & _   "よろしくおねがいします。" & vbCrLf   strMOJI(1) = vbCrLf & _   "以上です。" & vbCrLf & _   "ABC株式会社" & vbCrLf & _   "emaxemax"   objMAIL.To = "xxxx@xxx.co.jp"   objMAIL.CC = "yyyy@xxx.co.jp"   objMAIL.Subject = "テスト"   objMAIL.Body = strMOJI(0) & strMOJI(1)   objMAIL.Display End Sub

  • ExcelVBA 標準モジュール内関数の呼出し

    VB6.0からExcelの標準モジュール内のパラメータ付関数を呼出すにはどうしたらよろしいでしょうか? Dim app As Excel.Application Dim wb As Workbook Set app = CreateObject("excel.application") Set wb = app.Workbooks.Open("TestXl.xls") Set app = Nothing 以上のように記述し指定のエクセルファイルをオープンすることはできたのですが ここからどうやって標準モジュールを参照し、その中の関数を実行するかがわかりません。

専門家に質問してみよう