VBAでファイルを添付してメールを送信する際にエラーが発生する

このQ&Aのポイント
  • VBAのプログラムでボタンを押すと、指定したアドレスにファイルが添付される仕組みを作成しました。
  • 大抵のパソコンでは正常に送信できますが、時々「実行時エラー'1004' 'send Mail メソッドは失敗しました。'_Workbook'オブジェクト」というエラーメッセージが表示されて送信できません。
  • エラーメッセージによると、4行目のコードに問題があるようですが、使用するパソコンの設定や環境によって送信できない可能性があるか、それともプログラム自体に問題があるかはわかりません。
回答を見る
  • ベストアンサー

使用するパソコンの違いでメソッドのエラーが出ます。

以下のようなVBAで、ボタンを押すと、指定したアドレスにファイルが添付されるようにしました。 大抵のパソコンからは送れるのですが、たまにエラーで 「実行時エラー'1004' 'send Mail メソッドは失敗しました。'_Workbook'オブジェクト」 と言うのがでて送れなかったと報告を受けます。 4行目が黄色くなっているそうなのですが、使用するパソコンの設定か何かで送れないことがあるのでしょうか? それとも、そもそも根本的に違っているのでしょうか? よろしくお願いします。 Sub SendMail() Dim strAddress As String strAddress = "ここは送付先のアドレス" ActiveWorkbook.SendMail Recipients:=strAddress Range("J1:K6,K11:K25").Select Range("K11").Activate Selection.ClearContents End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

>どのパソコンからも送れるように設定することはできるのでしょうか? SMTPサービス コンポーネントをインストールすれば可能ですが、インストールしない場合は、SMTPサーバを指定しないといけないので難しいのではないかと思います。

参考URL:
http://www.atmarkit.co.jp/fwin2k/win2ktips/428wshmail/wshmail.html

その他の回答 (1)

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.1

おそらく Outlook を使用していないからではないでしょうか。

yrrpk059
質問者

補足

ありがとうございます。 どうやらそのようです。 どのパソコンからも送れるように設定することはできるのでしょうか?

関連するQ&A

  • ワードのマクロで「メール送付」を組みたいです

    ワード上でコマンドボタンをつくり、そこに 「このファイルを添付してメールを送る」という意味をこめて以下のような記述をしました。 Private Sub CommandButton2_Click() Dim strAddress As String strAddress = "●●@●●●.com" ActiveWorkbook.SendMail Recipients:=strAddress End Sub しかし、「オブジェクトが必要です」というエラーが出てしまいます。 エクセルではこれで問題なかったのですが、どうしたら正しい記述になりますでしょうか。 ご教示よろしくお願いします。

  • VBA オートメーションエラー(要素が見つかりません)

    というエラーが出ます。コードは以下の通りです。 エラーの意味と文法上、おかしい箇所があればお教えください。 尚、今まで使用していたマクロで、今日初めてエラーが出ました。 「Sheet1」以外のシートからの実行です。Excel2000です。 よろしくお願いします。 Sub リセット1() Sheets("Sheet1").Select Range("A2:D5000,E2:F5000,I2:U5000").Select Range("A2").Activate Selection.ClearContents End Sub

  • 'Range'メソッドは失敗しました

    ExcelのVBAの質問になりますが、教えてください。 下記を動かすと最後の行で「'Range'メソッドは失敗しました: '_Worksheet' オブジェクト」と出ます どうしても最後の行をセレクトしたいのですが、どうしたらよいでしょうか。 Option Explicit Public WB1 As Workbook Public WB1SH1 As Worksheet Public CSVWB1 As Workbook Public CSVWB1SH1 As Worksheet Dim MaxRow As Integer Private Sub CommandButton1_Click() Set WB1 = ActiveWorkbook Set WB1SH1 = WB1.Worksheets(1) Dim a As String a = WB1SH1.Range("a1) Workbooks.Open "C:\Users\User\Desktop\" & a & ".CSV" Set CSVWB1 = ActiveWorkbook Set CSVWB1SH1 = CSVWB1.Worksheets(1) MaxRow = CSVWB1SH1.Cells(Rows.Count, 1).End(xlUp).Row WB1SH1.Activate WB1SH1.Range(Cells(1, 1), Cells(MaxRow, 3)).Select CSVWB1SH1.Activate CSVWB1SH1.Range(Cells(1, 1), Cells(MaxRow, 3)).Select  '←ここでエラーがでる End Sub

  • Excel VBA 行を折り返すとエラー

    いつもお世話になっています。 下記のように複数セルを選択して削除する構文を書きました。 これ自体は問題ないのですが、セルの数が多いので途中で折り返すように 記述しなおすと、エラーになります。 なぜなのかわかりません。 基本的な質問で申し訳ありませんが、よろしくお願いいたします。 Sub リセット() Range("G4,F6:G6,T8,S10,S12,S15,S18,S20,S22,G25,K25,O25,L34,H36,L35,L36,H37,L37").Select Selection.ClearContents End Sub 書き換えた構文 Sub リセット() Range("G4,F6:G6,T8,S10,S12,S15,S18,S20,S22,G25", _ "K25,O25,L34,H36,L35,L36,H37,L37").Select Selection.ClearContents End Sub

  • エクセルでマクロを組み始めたばかりの者です。下記の

    エクセルでマクロを組み始めたばかりの者です。下記のようなマクロを組んでみましたが、27行目もしくは41行目のActiveSheet.Pasteで「実行時エラー‘1004‘: 変更しようとしているセルまたはグラフは保護されているため読み取り専用となっています…」というエラーメッセージが出て止まってしまいます。 しようとしている内容は、転送ボタンを押し各シートの指定セルへ一括転送(コピー)をしたいのです。 その際、転送先はシート保護をしておきたいのです。 エラーはエクセル2010で確認しましたが、職場のPCを使用するため2007や2003等他のバージョンを利用する可能性もあります。また、仕事で使用するため早急に使わなければならず焦っています。 Option Explicit Private Sub CommandButton2_Click() Call Macro2 End Sub Sub Macro2() Workbook.Open Filename:=”K:¥共有¥○○○.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”○○○.xlsm”).Activate Range(”E7”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False Workbook.Open Filename:=”C:¥Users¥Desktop¥×××.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”×××.xlsm”).Activate Sheet(”△△△”).Select Range(”AF18:AI34”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False Workbook.Open Filename:=”K:¥共有¥□□□.xlsm” ActiveSheet.Unprotect ThisWorkbook.Activate Range(”D4:G20”).Select Selection.Copy Windows(”□□□.xlsm”).Activate Sheet(”▽▽▽”).Select Range(”AF18:AI34”).Select ActiveSheet.Paste Application.CutCopyMode = False ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ActiveWorkbook.Save ActiveWindow.Close Application.CutCopyMode = False MsgBox " 『○○○』と" & vbCrLf & "『×××』と" & vbCrLf & "『□□□』の" & vbCrLf & "規格を変更しました。" End Sub どの様に修正すれば良いのでしょうか? マクロが原因でしょうか?または他の原因があるのでしょうか? マクロ初心者のため、修正方法など具体的な詳細をお教えいただけないでしょうか。 お手数をおかけして申し訳ございませんが、よろしくお願いします。

  • rangeからcellsに帰る場合の書式

    Sub Macro1() Range("A1").Activate Selection.AutoFill Destination:=Range("A1:A10"), Type:=xlFillDefault End Sub をRangeではなくCellsに変えたいのですが、 Sub Macro2() Range("A1").Activate Selection.AutoFill Destination:=Range(Cells(1, 1) & ";" & Cells(10, 1)), Type:=xlFillDefault End Sub だと、 実行時エラー1004になってしまいます。 Sub Macro3() Range("A1").Activate Selection.AutoFill Destination:=Range(Cells(1, 1), Cells(10, 1)), Type:=xlFillDefault End Sub だとうまくいくのですが、 なぜRengeの時は、「;」なのに、cellsの時は、「、」でいいのでしょうか?

  • 型が一致しない というエラー

    Private Sub Worksheet_Change(ByVal Target As Range) If Target = Range("B1") Then Range("B3:B8").Select Selection.ClearContents End If End Sub というコードを書いています。 B3~B8は「数字」という書式です。 型が一致しない13番のエラーが出ます。 原因と対処法を教えてください。 宜しくお願いします。

  • 【ExcelVBA】 既にあるマクロの間で実行させたいのです。

    こんにちは 下のマクロを・・・ Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Const RangeName As String = "●入力" If Not Intersect(Range(RangeName), Target) Is Nothing Then Cancel = True If Target = "●" Then Target = "" Else Target = "●" End If End If End Sub このマクロの■ここで実行■で実行させたいのですが、どのようにしたらよいでしょう。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$D$1" Then Exit Sub Cancel = True Columns("A:U").Select Range("T1").Activate Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlYes, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin, DataOption1:=xlSortNormal Selection.Replace What:="ああ", Replacement:="", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False Range("D1").Select End Sub ■ここで実行■ Private Sub Worksheet_Change(ByVal Target As Range) strAddress = "A1:A2000" On Error GoTo ErrorHandler If Target.Count > 1 Then GoTo ErrorHandler If Not Intersect(Target, Range(strAddress)) Is Nothing Then Application.EnableEvents = False Range(strAddress).ClearContents Target.Value = "●" End If ErrorHandler: Application.EnableEvents = True End Sub

  • エクセルのマクロ

    セルの値が変わったら動くマクロですが、2つ書くとエラーが出ます。 どのように直したらいいでしょうか? Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address If Intersect(Target, Range("EK22")) Is Nothing Then Exit Sub Else Range("EK24:EM28").Select Selection.ClearContents End If End Sub Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("EK24")) Is Nothing Then Exit Sub Else Range("EK27:EM28").Select Selection.ClearContents End If End Sub

  • マクロの実行とコマンドボタン

    office2000、WIN98SEです。 マクロの記録でマクロを作成しました。 これをコマンドボタンにコピペして実行するとエラーになります。マクロの実行から動かすとなんの問題もありません。なにがいけないんでしょう。教えてください。 ちなみにやりたいことは、複数のシートの同じセルを一気にクリアにしたいです。 記録したマクロは以下の通りです。宜しくお願いします。 Sheets(Array("用紙(1)", "用紙(2)", "用紙(3)", "用紙(4)")).Select Sheets("用紙(1)").Activate Range("B9").Select ActiveWindow.SmallScroll Down:=36 Range("B9:C58").Select Selection.ClearContents Range("F9").Select ActiveWindow.SmallScroll Down:=36 Range("F9:G58").Select Selection.ClearContents Range("I9").Select ActiveWindow.SmallScroll Down:=36 Range("I9:I58").Select Selection.ClearContents Sheets("用紙(1)").Select Range("B9").Select End Sub