環視フォルダ内に新しく追加されたファイルをメールで送信する設定をしています。
以下のバッチを使用しているのですが、pdfファイルのみを送信したいのですがどのように記述すればよいでしょうか?
Dim Fs, strPath, Fl, F, NewFile, NewFileFP, OutF
Set Fs = CreateObject("Scripting.FileSystemObject")
strPath = "C:\Users\マイPC\Desktop\監視ファイル送信\"
NewFile = ""
Set Fl = Fs.GetFolder(strPath)
For Each F In Fl.Files
If F.Name > NewFile Then
NewFile = F.Name
End If
Next
NewFileFP = Fl & "\" & NewFile
Dim WshShell, BtnCode
Set WshShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")
Set oMsg = CreateObject("CDO.Message")
oMsg.From = "ファイル送信元 <差し出す側のメールアドレス>" '送信元
oMsg.To = "送信する宛先メールアドレス" '送信先
oMsg.Bcc = "宛先サブメールアドレス"
oMsg.Subject = "新着ファックスの送信" '件名
oMsg.TextBody = "新着FAXファイルをお送りします。" 'メール本文
oMsg.AddAttachment NewFileFP '添付
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 2
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = "メール送信サーバー"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 587
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = 1
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = "アカウント名"
oMsg.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/s … = "パスワード"
oMsg.Configuration.Fields.Update
oMsg.Send
Set OutF = Fs.OpenTextFile("C:\FileSend\Fsend.log",8)
OutF.WriteLine "Date[" & date & "] Time[" & time & "] File[" & NewFile & "]"
OutF.Close
Fs.DeleteFile NewFileFP
objShell.Popup "メール送信しました。", 0, "送信完了", 0
Set Fs = Nothing
Set Fl = Nothing
Set OutF = Nothing
No.2ベストアンサー
- 回答日時:
ANo.1です。
フォルダ監視(フォルダに新しいファイルが配置されたことを検知する部分)は別途プログラムで行っていて、質問のスクリプトは新しいファイルが検知されたときに呼び出されるということで良いですか。それなら、最初の
For each F In Fl.Files
~
Next
の部分の中身が変で、この~の中に、ファイルFがpdfか否かの判定とpdfだった場合のメール送信の全てを記述するべきです。例えば以下のように。
’ ここから
If Fs.GetExtensionName(F.Name)="PDF" Then
NewFileFP = Fl & "\" & F.Name
' ここにメール送信処理
End If
Fs.DeleteFile F.Name
' ここまで (動作未検証)
なお、拡張子によって処理を分ける記述例は下記に。
http://bayashita.com/p/entry/show/75
ちなみにフォルダ監視もVBSで記述することはできます。その場合はWMI Serviceを利用してファイル生成を監視するのが効率的ですが、Windowsにある程度詳しくないと書くのが難しいです。
ご丁寧にコードを書いていただきありがとうございました。
組み入れてみたのですが、うまく動作しませんでした。
やはり素人にはハードルが高すぎるので、あきらめます。
ありがとうございました。
No.1
- 回答日時:
ちょっと分からないですが質問のリストだと、フォルダに複数のファイルが追加されたとき名前順で最も大きいファイルだけが処理されますよね。
後のファイルは?あとFileSystemObjectを使っているのは何故ですか。ファイル取得だけならDirで十分ですし、Dirならワイルドカード指定して.pdfのみ抽出とか簡単ですけど。
また最後にメールしたファイルを削除していますが、.pdf以外のファイルは削除するのか残すのかどちらにしたいのですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) outlook マクロが終了しません。 1 2022/09/02 11:14
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
- 英語 【大至急】Hellotalk公式からメールの返信が来ました 1 2022/04/18 17:53
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Androidスマホ(AQUOSセンスライ...
-
音楽ファイルを、離れている友...
-
ハイパーリンクつきのエクセル...
-
ワード文章複数を同時にhotmail...
-
Gmailで頂いたメールにファイル...
-
Gメールの添付ファイル
-
自己解凍型の添付ファイルの開...
-
エクセル、ワードファイルをメ...
-
このファイルの閲覧方法は ???
-
ACCESS97でデータをcsv形式に変...
-
メールの添付の際に、ファイル...
-
ガラケーからスマホへのメール...
-
PCからPCへファイルをつけてメ...
-
「例外メール検出のお知らせ」...
-
メールに添付されたWordファイ...
-
MSN Livemail 添付ファイルが開...
-
メールに勝手に謎のファイルが...
-
圧縮しても10MB以上のファイル...
-
Yahooメールに添付されて送られ...
-
yahooメールは受信箱は一万件以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Gmailで頂いたメールにファイル...
-
とあるメルマガについてたPDFで...
-
添付ファイル名の最後に自動的...
-
エクセルの添付ファイルが開け...
-
Outlook Express - 添付ファイ...
-
このファイルの閲覧方法は ???
-
onedriveにあるファイルを一時...
-
メールに添付したHTMLファイル...
-
BCCで送られてきたメールで添付...
-
メールに添付されたファイルの...
-
データをメールで送る方法
-
送ったPDFが途中までしか開けま...
-
Mailのemlx形式ファイルをemlに...
-
拡張子.exe_を.exeに変更したい…
-
メールに添付されたWordファイ...
-
EdMaxからOutlookへメールを移...
-
ガラケーからスマホへのメール...
-
VMGファイルの添付ファイルを得...
-
メールでの重い添付ファイルの...
-
Androidスマホ(AQUOSセンスライ...
おすすめ情報
実を言うと、VBSについては全くわからないド素人です。WEBサイトをあちこち参考にして引用して使っています。すみません。
FAXが届くとPCに保存されるようになっていて、保存されるフォルダを監視し、新しく追加されたファイルを一旦デスクトップの別フォルダへコピーします。その別フォルダを「監視ソフト」を使って監視し、今回質問したバッチを動かすというしくみにしています。
FAXが来た時に、席をはずしていると気が付かないことがあるので、メールで送信することにしたのです。
それで、FAXが「ti」という拡張子のついたファイルからPDFに変換しているらしいのです。別フォルダへ追加ファイルがコピーされたときに、「ti」のファイルもコピーしてしまって、そのファイルとPDFと二つのファイルがメールで送信されることとなってしまっています。なので、PDFだけ送信するようにしたいというわけなのです。
参考にしたサイトは下記です。
https://plaza.rakuten.co.jp/mscrtf/diary/2012062 …
https://plaza.rakuten.co.jp/mscrtf/diary/2012062 …
https://note.chiebukuro.yahoo.co.jp/detail/n8385
さすがにコマンドを自分で考えるのは難しいです。お力をお借りできれば幸いです。
忘れていました。デスクトップの別フォルダにコピーされたFAXデータはメール送信ができたらすべて削除されるようにするのは、変わらずそのままで大丈夫です。