- ベストアンサー
BASP21を使ってファイル添付メールを送信したい
- basp21 proでメールにファイル添付したいが型が一致しないエラーが出る
- ファイル名の指定は変更すべきか
- SendMailMacro1を使用してファイル添付メールを送信する方法
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
どこにも、basp21の記述がないですよ。 Dim bobj As Object Set bobj = CreateObject("basp21") して ret = bobj.SendMail(szServer, szTo, szFrom, szSubj, szBody, szFile) しないと。 後、CC、BCCは中身がないのにくっつけるとエラーになりますから注意してください。
その他の回答 (1)
- 0909union
- ベストアンサー率39% (325/818)
No1の方に追加です。 さらに言えば、 Worksheets("maildata").Cells(8, 2) よくわからないが、これって、セルの中身がStringで返されるんですか? RANGオブジェクトが返されると思っていましたが、そのようなオートメーション機能が働くのでしょうか? CStrなどで、文字列に変換してみてください。変換されますか? CStr(Worksheets("maildata").Cells(8, 2) )
補足
実は別の人間が作ったのをいじっているだけなので分からないのですが、 元の↓は動いてます。(これはファイル添付がszFile = ""で無いので…) Option Explicit Declare Function SendMail Lib "bsmtp" _ (szServer As String, szTo As String, _ szFrom As String, szSubject As String, szBody As String, szFile As String) As String Sub SendMailMacro1() Dim ret As String, szLogfile As String, szServer As String, szTo As String, szFrom As String Dim szSubject As String, szBody As String, szFile As String Dim flBody Dim i ,j ,z As Long Dim fs, a As Object On Error GoTo Err_Handler Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile("C:\Program Files\log.txt", True) szServer = Worksheets("maildata").Cells(10, 2) szSubject = Worksheets("maildata").Cells(5, 2) szFrom = Worksheets("maildata").Cells(8, 2) With Worksheets("senddata") i = 2 Do While .Cells(i, 1) <> "END" If .Cells(i, 1) = "1" Then szTo = .Cells(i, 3) & vbTab & "cc" & vbTab & .Cells(i, 10) szBody = .Cells(i, 9) szFile = "" ret = SendMail(szServer, szTo, szFrom, szSubject, szBody, szFile) If Len(ret) <> 0 Then a.WriteLine (Date & " " & Time & " " & ret & "-" & szTo & "-" & szBody) MsgBox "エラー" & ret & "-" & .Cells(i, 1) .Cells(i, 1) = "エラー" Else .Cells(i, 1) = "完了" End If End If i = i + 1 Loop End With MsgBox "終了" GoTo Exit_sub Err_Handler: MsgBox Err.Description, vbCritical, "Error" GoTo Exit_sub Exit_sub: a.Close End Sub
お礼
ご協力ありがとうございました^^; 解決いたしました><; 最初の部分が Sub SendMailMacro1() Dim ret As String Dim szLogfile As String Dim szServer As String, szTo As String, szFrom As String Dim szSubject As String, szBody As String, szFile As String Dim z As String Dim i, j As Long Dim fs, a As Object On Error GoTo Err_Handler Set fs = CreateObject("Scripting.FileSystemObject") Set a = fs.CreateTextFile("C:\Program Files\log.txt", True) szServer = Worksheets("maildata").Cells(10, 2) szFrom = CStr(Worksheets("maildata").Cells(8, 2)) でいけました!
補足
本当ですね・・・すみません抜けてます。。 追加をしたのですが、今度は 実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません となってしまいます><;