プログラミング

プログラミングに関するフォーラムです。VBAは除きます。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : 指定なし)
vbs ファイル名をメール本文に
投稿日時: 19/05/29 11:28:06
投稿者: ラングドシャ

先日に引き続きお願いいたします。
前回、フォルダ内のファイルをすべて添付する方法を教えていただき
うまくできました。
今回本文に、あいさつ文と添付したファイル名をすべて追加したいので
以下の赤字部分を追加してみました。がうまくできません。
どのように変更すればよいのかご指導お願いいたします。
よろしくお願いいたします。
複数参考サイトからコードをいただいてます。
見難くなっていると思います。申し訳ありません。
 
Dim Fs, strPath, Fl, F, NewFile, NewFileFP, OutF
Dim objFileSys
Dim objFolder
Dim objFile

Dim WshShell, BtnCode
 Set WshShell = WScript.CreateObject("WScript.Shell")
 Set objShell = CreateObject("Wscript.Shell")
 Set oMsg = CreateObject("CDO.Message")
 
'ファイルシステムを扱うオブジェクトを作成
Set objFileSys = CreateObject("Scripting.FileSystemObject")
  
'c:\temp フォルダのオブジェクトを取得
Set objFolder = objFileSys.GetFolder("z:\test")

 
Set Fs = CreateObject("Scripting.FileSystemObject")
strPath = "z:\test"
 
 oMsg.From = "送信者 <sousin@xxxx.com>"
 oMsg.To = "受信1 様 <jyusin1@xxxx.com>"
 oMsg.Cc = "受信2 様 <jyusin2@xxxx.com>"
 oMsg.Bcc = ""
 oMsg.Subject = "テスト送信"
 oMsg.TextBody = "担当者様" & vbCrLf & vbCrLf & "確認お願いします。" & vbCrLf & vbCrLf
  
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
    '取得したファイルのファイル名を表示
    'WScript.Echo objFile.Name
    oMsg.TextBody.WriteLine objFile.Name
Next

If Fs.FolderExists(strPath) Then
     Set Fl = Fs.GetFolder(strPath)
     For Each F In Fl.Files
         oMsg.AddAttachment F.Path
     Next
     Set Fl = Nothing
 Else
     MsgBox "フォルダー """ & strPath & """ を参照出来ません。", vbCritical, "エラー"
End If
 
Set objFolder = Nothing
Set objFileSys = Nothing
 
 oMsg.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
 oMsg.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.xxxx.com"
 oMsg.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
 oMsg.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
 oMsg.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxx%xxxx.com"
 oMsg.Configuration.Fields.Item _
 ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
 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
  
 objShell.Popup "メール送信しました。", 0, "送信完了", 0
 Set Fs = Nothing
 Set Fl = Nothing
 Set OutF = Nothing
    

回答
投稿日時: 19/05/29 13:33:10
投稿者: sk

引用:
Set oMsg = CreateObject("CDO.Message")

引用:
oMsg.TextBody.WriteLine objFile.Name

CDO.Message オブジェクトの TextBody プロパティの
データ型は String 型です。
 
何かのオブジェクトへの参照を返すプロパティではありませんので、
当然 WriteLine という名前のメソッドなど定義されていません。
 
引用:
oMsg.TextBody = "担当者様" & vbCrLf & vbCrLf & "確認お願いします。" & vbCrLf & vbCrLf
   
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
    '取得したファイルのファイル名を表示
    'WScript.Echo objFile.Name
    oMsg.TextBody.WriteLine objFile.Name
Next

Dim strBody
 
strBody = "担当者様" & vbCrLf & vbCrLf & "確認お願いします。" & vbCrLf & vbCrLf
   
'FolderオブジェクトのFilesプロパティからFileオブジェクトを取得
For Each objFile In objFolder.Files
    strBody = strBody & objFile.Name & vbCrLf
Next
 
oMsg.TextBody = strBody

投稿日時: 19/05/29 14:24:44
投稿者: ラングドシャ

sk様
 
いつもありがとうございます。
 
ログファイルに書き出すというコードと、ファイル名を表示するという
コードを参考にしておりました。
教えていただいたコードを見るととてもわかりやすく、わからないながらですが
なるほどとほんの少し理解ができたように思います。
 
ありがとうございました。