VBAでエクセルからOutlookメールを生成する方法

このQ&Aのポイント
  • VBAを使用してエクセルからOutlookのメールを生成する方法について解説します。エクセルVBAでメールを作成し、送信先アドレスや本文を設定してメールを送信する方法を学びましょう。
  • エクセルVBAでメールを作成する際、Outlookのアプリケーションオブジェクトを作成する必要があります。しかし、参照設定を行わずにオブジェクトを宣言するとコンパイルエラーが発生します。このエラーの解決法についても解説します。
  • 参照設定を行わずにOutlookのメールを生成する方法には、オブジェクト変数を使用する方法があります。具体的なコード例も紹介していますので、参考にしてみてください。
回答を見る
  • ベストアンサー

コンパイルエラーです。 vba

エクセルvbaからメールを生成したいのですが New Outlook.Application の部分でエラーになります。 コンパイルエラーです。 Outlookに参照設定せずに、Objectで宣言しているのが原因だと思いますが、 参照設定せずに、メールを立ち上げるにはどうすればいいですか? Sub Sample() Dim OlApp As Object Dim mItem As Object Set OlApp = New Outlook.Application Set mItem = OlApp.CreateItem(olMailItem) With mItem .To = "test@yahoo.co.jp" .Body = "test" .display End With End Sub

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (7994/17083)
回答No.1

Dim OlApp as Object Set OlApp = CreateObject("Outlook.Application") こんな感じでうまくいきませんか?

QZPJCWGVUYWQW
質問者

お礼

ありがとうございました。

関連するQ&A

  • アクセスからアウトルックでメールを送りたい

    アクセスからアウトルックでメールを送るために調べたのですが 新しいメッセージを作ってメールを送信するところまではできたのですが 送信ボタンを押下しても、どうやらアウトルックが開いてないと送信できないことがわかりました。 アウトルックは常に立ち上げていません。 なので下記のコードに、アウトルックを立ち上げるコードを入れたのですが わからないので教えていただけますか? Sub メール送信() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Set OlApp = New Outlook.Application Set mItem = OlApp.CreateItem(olMailItem) With mItem .To = "○○@docomo.ne.jp" .Body = "test" .display End With End Sub アウトルックのバージョンは2007です。ご教授よろしくお願いします。

  • アウトルックvba 差出人を指定したい

    vbaでメールを送信したいのですが、 アウトルックに二つのアカウントを登録しています。 その時 Sub メール作成() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Set OlApp = New Outlook.Application Set mItem = OlApp.CreateItem(olMailItem) With mItem .To = "test2@docomo.ne.jp" .Subject = "メモ" .Display End With End Sub は、問題なくできるのですが、 差出人(送信者)の部分をどうすればいいかわからないです。 差出人(送信者)の部分とは、画像の部分です。 .Sender = "test@.co.jp" にすると "test@.co.jp"が、コンパイルエラー 型が一致しません。になります。 ヘルプを見ると、 MailItem の送信元のアカウントのユーザーに対応する AddressEntry オブジェクトを取得または設定します。 と書いてあります。 何を言ってるかよくわかりませんが、差出人(送信者)の指定ではないようです。 なので、 .SenderEmailAddress = "test@.co.jp" にしてみましたが、 値の取得のみ可能とのことなので、エラーになりました。 どうやって差出人の指定をすればいいのでしょうか? バージョンは2010です。 よろしくお願いします。

  • マクロがうまくいきません!

    office2000を使用してます。 Excelでボタンをクリックするのみであらかじめ作られたメッセージがメールで送信されるマクロを作成中です。 Private Sub CommandButton2_Click() Dim OLApp As Outlook.Application Dim mItem As Outlook.MailItem Set OLApp = CreateObject("Outlook.Application.9") Set mItem = OLApp.CreateItem(olMailItem) With mItem .Recipients.Add("abcd@abcd.co.jp").Type = olTo .Subject = "明日の件" .BodyFormat = olFormatPlain .Body = "明日、久しぶりに会えるのを" & _ "楽しみにしています。" & vbCr & _ "それじゃ。" .Send End With Set mItem = Nothing Set OLApp = Nothing End Sub このように作成したのですがうまくいきません。 エラーで「オブジェクトは、このプロパティまたはメソッドをサポートしていません」と出ます。参照設定も行ったのですが、どうしてでしょうか?どなたかお願いします。

  • GetNamespaceで、コンパイルエラー

    アクセスからアウトルックの受信メールを操作しようとしているのですが Private Sub test1() Dim requestsFolder As MAPIFolder Dim appNameSpace As Namespace Dim requestMailItem As MailItem Dim i As Integer '受信フォルダの取得 Set appNameSpace = Application.GetNamepace("MAPI") Set requestsFolder = appNameSpace.GetDfaultFolder(olFolderInbox) ・ ・ ・ End Sub これを実行すると GetNamespaceで、コンパイルエラーになります。 Microsoft Outlook ○.○ Object Library で、アウトルックに参照設定はしているのですが アクセスからはGetNamespaceは使えないのでしょうか?

  • outlook2003 本文の一部に色を付けたい。

    vbaでメールを作成するマクロは組めたのですが 一部の文字に色をつける方法がわかりません。 Sub test() Dim acoutlook As Outlook.Application Dim acmail As MailItem Set acoutlook = GetObject(, "outlook.Application") Set acmail = acoutlook.CreateItem(olMailItem) With acmail .To = "aaaa@com" .Subject = "件名" .Body = "赤です。よろしくお願いします。" .Display End With End Sub 上のコードの「赤」という部分を赤色にするにはどうすればいいでしょうか。 ちなみにこれはアクセスから起動しています。 よろしくお願いします。

  • Outlookのメールを送信するマクロ

    お世話になっております。 Microsoft Outlook2003使用で メール送信のマクロを見様見真似で作ってみたのですが、本文部分がうまくいきません(Best regardsしか表示されません)。 どうすれば正しく反映されるでしょうか? シートのB1にToアドレスを記入していてTo_addressと名前付 以下、Cc_addressとSubjectも同様にしています。 本文の文章は何行かあり、途中で空白行も入れたいのですが、そこまでまだ手がつけられていません。 本文の文章が3行あるとすると、このマクロではComment1、Comment2、Comment3と名前付しています。 Sub SendEmail() Dim OlApp As Outlook.Application Dim mItem As Outlook.MailItem Dim cell As Range Dim Subj As String Dim EmailAddr As String Dim Recipient As String Dim Msg As String Dim Message As String Dim Sender As String Dim Comments As String Dim Comments2 As String Dim report As String Worksheets("Sheet1").Activate 'Create Outlook object  Set OutlookApp = New Outlook.Application 'Get the data Subj = Range("Subject") EmailAddr = Range("To_address") CCAddr = Range("Cc_address") Body = Range("Comment1") & ("Comment2") & ("Comment3") 'Compose message Msg = Msg & Comment1 & vbCrLf & vbCrLf Msg = Msg & Comment2 & vbCrLf & vbCrLf Msg = Msg & "Best regards," & vbCrLf & vbCrLf 'Create Mail Item Set mItem = OutlookApp.CreateItem(olMailItem) With mItem .To = EmailAddr .CC = CCAddr .BCC = BCCAddr .Subject = Subj .Body = Msg .Display End With End Sub 宜しくお願い致します。

  • VBA:コンパイルエラー

    http://www.microsoft.com/japan/msdn/columns/office/office06012000.asp にて示されたWebクエリダイアログを作成中: 以下の 'エラー の行で 「compile error:メソッドまたはデータメンバが見つかりません」 が発生、頓挫中。 ご教授お願いします。 Dim gcolTablesOnPage(15) As String Dim gintCurrentRecord As Integer Private Declare Sub Sleep Lib "KERNEL32" (ByVal dwMilliseconds As Long) Private Sub CB1_Click() WebBrowser1.Navigate2 "http://quote.yahoo.co.jp/m3?u" Call Sleep(5999) MsgBox "*" Set colTables = WebBrowser1.Document.all.tags("TABLE") End Sub Private Sub CB3_Click() Dim colTables As Object Dim colCurrentTable As Object Dim intcntr As Integer With WebBrowser1 gintCurrentRecord = 0 Set colTables = .Document.all.tags("TABLE") For Each colCurrentTable In colTables Call cHTM(colCurrentTable.outerhtml, gintCurrentRecord) gintCurrentRecord = gintCurrentRecord + 1 Next colCurrentTable End With End Sub Function cHTM(x, gintCurrentRecord) Dim tempHtml As String tempHtml = gcolTablesOnPage(gintCurrentRecord) tempHtml = "<HTML><HEAD><TITLE></TITLE></HEAD><BODY>" & x & "</BODY></HTML>" End Function Private Sub CB5_Click() Dim gintCurrentRecord As Integer gintCurrentRecord = 0 If Me.gintCurrentRecord < gcolTablesOnPage.Count Then 'エラー Me.gintCurrentRecord = Me.gintCurrentRecord + 1 WebBrowser1.Navigate2 gcolTablesOnPage(Me.gintCurrentRecord) End If ge.Count End Function

  • VBA クラスモジュールについて

    http://www.excellenceweb.net/vba/class/what_vba_class.html を見ながらクラスモジュールの勉強をしているのですが 躓きました。 新規にクラスモジュールを挿入し オブジェクト名に果物売上と名付けました。 そこに、 Sub TEST() Dim Apple As 果物売上 Set Apple = New 果物売上 End Sub と入力しました。 そして標準モジュールを挿入し、 そこに Sub TEST() Dim Apple As 果物売上 Set Apple = New 果物売上 With Apple .名前 = "リンゴ" .価格 = 100 .在庫 = 20 .仕入数 = 50 End With With Apple Debug.Print .名前 End With End Sub を入力しました。 そして、デバッグすると 「Apple As 果物売上」の部分が コンパイルエラーになってしまいます。 全然クラスモジュールの使い方がわからないのですが どこを直せばいいのでしょうか?

  • マクロで携帯にメール送信

    いつもお世話になっております。 過去に何度か質問をさせていただき、今回のマクロまでたどり着くことが出来ました。 下記の内容にて、作成しました。 ここで、 (1)セルB1にあて先メアドを置いた場合に、メアドを載せる場合 (2)メールを送信する命令で、【myItem.Send】や【SendMail】ではメールが送信されている場合と送信待機の場合がはっせいしております。必ず、送信するまでの命令を、お教えいただきたいです。 PC環境は、XPです。 メールはMicrosoft Office Outlookです。 Sub CreateMail() '参照設定 : Miscosoft Outlook 9.0Object Library Const ShName = "MAIL送信" Const SbjAdd = "b2" Const BodyAdd = "b3:b14" Dim olApp As Outlook.Application Dim objMail As Outlook.MailItem Dim Rng As Range Dim StrBody As String Set olApp = Outlook.Application Set objMail = olApp.CreateItem(olMailItem) For Each Rng In Range(BodyAdd) StrBody = StrBody & Rng.Value & vbLf Next Rng With objMail .Subject = Worksheets(ShName).Range(SbjAdd).Value .Body = StrBody .Display End With End Sub

  • エクセルVBAでOutlookメールの書式を変える

    エクセル2010です。 下記のようなコードでOutlookメールを作成したとき、たとえば  "ABC株式会社" だけを赤字で太文字にするにはどう書けばよいのでしょうか? Sub TEST001()   Dim oApp As Object   Dim objMAIL As Object   Dim strMOJI(1) As String   On Error Resume Next   Set oApp = GetObject(, "Outlook.Application")   On Error GoTo 0   If oApp Is Nothing Then     Set oApp = CreateObject("Outlook.Application")   End If   Set objMAIL = oApp.CreateItem(0)   strMOJI(0) = "こんにちは!" & vbCrLf & _   "色付けテストです。" & vbCrLf & _   "よろしくおねがいします。" & vbCrLf   strMOJI(1) = vbCrLf & _   "以上です。" & vbCrLf & _   "ABC株式会社" & vbCrLf & _   "emaxemax"   objMAIL.To = "xxxx@xxx.co.jp"   objMAIL.CC = "yyyy@xxx.co.jp"   objMAIL.Subject = "テスト"   objMAIL.Body = strMOJI(0) & strMOJI(1)   objMAIL.Display End Sub

専門家に質問してみよう