2017-03-17 18 views
0

本文としてテキストボックス(Excelでtxという名前)にテキストを使用してOutlookで電子メールを送信しようとしています。Excelのテキストボックスにテキストを使用してOutlook電子メールを送信する - エラー424:オブジェクトが必要です

私は、コードを実行すると、ライン上のエラーがある:

strbody = tx.Text 

エラー424:オブジェクトは、CDOを使用することができ

Sub SendMail() 

Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem 
Dim strbody As String 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(olMailItem) 

strbody = tx.Text 

'On Error Resume Next 
With OutMail 
    .To = "..." 
    .CC = "" 
    .BCC = "" 
    .Subject = Cells(3, 2) 
    .Body = strbody 

    .Send 
End With 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 
+0

'tx'はあなたのサブで定義されていません、それは公共の変数ですか?何が問題になっているようですか?期待されていないことを説明してください! – R3uK

+0

@ R3uKワークシートのテキストボックスの名前だと思います – CallumDA

+0

ここで問題は何ですか?これを実行すると、空の電子メールを送信しますか、エラーですか、何もしませんか? '.Send'を使うと、あなたのセキュリティ設定がそれを制限している場合、' .Display'でスワップアウトして、何が動作していないかを知ることができます。 – CLR

答えて

1

は、あなたのテキストボックスがstrbody = ThisWorkBook.Sheets("Sheet's name").Shapes("tx").ControlFormat.Value


あるシートの名前で Sheet's nameを交換してください
Sub SendMail() 

Dim OutApp As Outlook.Application 
Dim OutMail As Outlook.MailItem 
Dim strbody As String 

Set OutApp = CreateObject("Outlook.Application") 
Set OutMail = OutApp.CreateItem(olMailItem) 

strbody = ThisWorkBook.Sheets("Sheet's name").Shapes("tx").ControlFormat.Value 

'On Error Resume Next 
With OutMail 
    .To = "..." 
    .CC = "" 
    .BCC = "" 
    .Subject = Cells(3, 2) 
    .Body = strbody 

    .Send 
End With 

Set OutMail = Nothing 
Set OutApp = Nothing 
End Sub 
+0

申し訳ありませんが、私はあなたの答えを見ませんでした。 ControlFormat.Value(エラー438:オブジェクトはこのプロパティまたはメソッドをサポートしていません) – Francis

+1

@Francis:Okですので、置き換えてみてください'DrawingObject.Text'による' ControlFormat.Value' – R3uK

+0

うわー、あなたはいいです。メルシ・ベークー! – Francis

0

が必要?ここで私は(電子メールアドレスと編集さSMTPサーバのアドレスを)エクセルVBAでのテスト関数に入れていくつかの簡単なVBAのコードは次のとおりです。

Sub test() 

    Dim strbody As String 
    strbody = "Test Email" & vbNewLine & vbNewLine & "TEST EMAIL" 

    Dim iMsg As Object 
    Set iMsg = CreateObject("CDO.Message") 

    With iMsg 

     .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") _ 
      = "whateverYourSMTPServerIs" 
     .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") _ 
      = 25 
     .Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") _ 
      = 2 'Stands for sending using CDO 
     .Configuration.Fields.Update 

     .To = "[email protected]" 
     .CC = "" 
     .BCC = "" 
     .From = "[email protected]" 
     .Subject = "Test Email" 
     .TextBody = strbody 
     .Send 
    End With 

End Sub 
+1

それはちょうど質問に答えることはできません...コメントをお寄せください – R3uK

+0

ありがとうございます。しかし私は自分の問題が他の場所にあると思う。 – Francis

+0

申し訳ありません。私は「これは正しい方法ではない」と誤解しています。「Outlookのライブラリを参照するだけで送信メールを送信する必要はありません」というのではなく、「このコードは使いたいものですが、機能しません" – Kevin

関連する問題