いろいろ検索や質問をしてエクセルVBAで、下記のコードによりOutlookのメールを自動作成できるようになりました。
Sub TEST01()
Set oApp = CreateObject("Outlook.Application")
Set objMAIL = oApp.CreateItem(0) 'olMailItem=0
strMOJI = "こんにちは!" & vbNewLine & "テストメールです。" & vbNewLine & "よろしくおねがいします。"
objMAIL.To = "XXXX@XXXXX.co.jp" '宛先
objMAIL.Subject = "テスト" '件名
objMAIL.Body = strMOJI '本文の代入
objMAIL.display '表示
End Sub
それで、実際にはstrMOJI に代入した文字列の下に、このマクロを記述してあるBOOKのSheets("Sheet1").Range("A1:D10")をコピーし、
「リッチテキスト形式」で貼り付けたいのです。
どのようなコードに変えればよいのか教えていただけると助かります。
よろしくお願いいたします。
No.3ベストアンサー
- 回答日時:
>ただ、マクロを2回以上走らせると、その都度いくつもOutlookが立ち上がってしまいます。
>これは解消できますか?
それは前回QAで手当て済みだったんですけどね。
Dim oApp As Object
Dim objMAIL As Object
Dim strMOJI(1) As String
Dim n As Long
On Error Resume Next
Set oApp = GetObject(, "Outlook.Application")
On Error GoTo 0
If oApp Is Nothing Then
Set oApp = CreateObject("Outlook.Application")
oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
End If
Set objMAIL = oApp.CreateItem(0)
strMOJI(0) = "こんにちは!" & vbCrLf & _
"テストメールです。" & vbCrLf & _
"よろしくおねがいします。" & vbCrLf
strMOJI(1) = "以上です。" & vbCrLf & _
"EMAX株式会社" & vbCrLf & _
"Emax"
objMAIL.To = "E-Mail_Address_Here"
objMAIL.Subject = "テスト"
objMAIL.BodyFormat = 2 'HTML形式
objMAIL.Body = strMOJI(0) & strMOJI(1)
objMAIL.display
n = Len(strMOJI(0))
ActiveSheet.Range("A1:D10").Copy
oApp.ActiveInspector.WordEditor.Range(n, n).Paste
Application.CutCopyMode = False
Set objMAIL = Nothing
Set oApp = Nothing
BodyFormatはHTML形式じゃないと書式が維持できないような感じです。
#バージョン、もしくは受信側のメーラーによるかもしれませんけど..
何から何までありがとうございます。
わからないことだらけですが、やりたいことができました。
感謝いたします。
これからもご指導賜りますようお願い申し上げます。
No.2
- 回答日時:
>なお、エクセルのバージョンは2010、Outlookは2007です。
EnvelopeVisibleプロパティは同一バージョンでないとエラーになるようです。(by Google君)
次案ですが、Sendkeysはトばして..Outlookのオプションの「メール形式」のところで
「電子メールの編集に..Word..を使用する..」的なチェックがあったらチェック入れておいて下記試してみて下さい。
#Outlook2007持ってないのでアヤフヤ
Dim oApp As Object
Dim objMAIL As Object
Dim strMOJI As String
Set oApp = CreateObject("Outlook.Application")
oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
Set objMAIL = oApp.CreateItem(0)
strMOJI = "こんにちは!" & vbNewLine & _
"テストメールです。" & vbNewLine & _
"よろしくおねがいします。" & vbNewLine
objMAIL.To = "E-Mail_Address_Here"
objMAIL.Subject = "テスト"
objMAIL.BodyFormat = 3
objMAIL.Body = strMOJI
objMAIL.display
ActiveSheet.Range("A1:D10").Copy
With oApp.ActiveInspector.WordEditor.Range
.Collapse 0
.Paste
End With
Application.CutCopyMode = False
Set objMAIL = Nothing
Set oApp = Nothing
ありがとうございます。
すごいです!
> 「電子メールの編集に..Word..を使用する..」的なチェックがあったらチェック入れておいて
見当たらないのでなにもしませんでしたがちゃんと出来ました。
ただ、マクロを2回以上走らせると、その都度いくつもOutlookが立ち上がってしまいます。
これは解消できますか?
また、ここまでできると欲が出てしまいました。
下記のように文字列の変数を2つもち、セル範囲を貼り付けた下にも文字列 strMOJI(1) を入れることは可能でしょうか?
勝手なことばかり言って申し訳ありません。
Sub twst02()
Dim oApp As Object
Dim objMAIL As Object
Dim strMOJI(1) As String
Set oApp = CreateObject("Outlook.Application")
oApp.GetNamespace("MAPI").GetDefaultFolder(6).display
Set objMAIL = oApp.CreateItem(0)
strMOJI(0) = "こんにちは!" & vbNewLine & _
"テストメールです。" & vbNewLine & _
"よろしくおねがいします。" & vbNewLine
strMOJI(1) = "以上です" & vbNewLine & _
"EMAX株式会社" & vbNewLine & _
"Emax"
objMAIL.To = "E-Mail_Address_Here"
objMAIL.Subject = "テスト"
objMAIL.BodyFormat = 3
objMAIL.Body = strMOJI(0)
objMAIL.display
ActiveSheet.Range("A1:D10").Copy
With oApp.ActiveInspector.WordEditor.Range
.Collapse 0
.Paste
End With
Application.CutCopyMode = False
Set objMAIL = Nothing
Set oApp = Nothing
End Sub
No.1
- 回答日時:
HTML形式ではダメなんでしょうか。
こちらにサンプルが載ってますし
『Excel 2002 または Excel 2003 で Visual Basic for Applications を使用して電子メール メッセージでセル範囲を送信する方法』
http://support.microsoft.com/kb/816644/ja
上記例のままでも[この選択範囲を送信する]で送信。
必要なら新規Bookにコピーするように変更したり。
Sub try()
Dim r As Range
Set r = ActiveSheet.Range("A1:D10")
With Workbooks.Add(xlWBATWorksheet)
.EnvelopeVisible = True
With .Sheets(1)
With .MailEnvelope
.Introduction = "こんにちは!" & vbNewLine & "テストメールです。" & vbNewLine & "よろしくおねがいします。"
.Item.To = "E-Mail_Address_Here"
.Item.Subject = "テスト"
'.Item.Send
End With
r.Copy .Range("A1")
End With
End With
End Sub
他には
・不安定だけど妥協してSendkeysを使う。
・(Outlookメール編集にWordを使っている場合)OutlookのActiveInspector.WordEditor.Range.Pasteメソッドを使う。
・セル範囲をhtm形式に吐き出してHTMLBodyに読み込む。(HTML形式メール)
・Win32API関数を使ってクリップボードからHTML Formatを取り出してHTMLBodyに読み込む。(HTML形式メール)
などが考えられない事もないです。
end-uさん、前回もありがとうございました。
今回もさっそくありがとうございます。
試してみましたが、参考URLのものも、end-uさんご提示のものも
.EnvelopeVisible = True
のところで実行時エラー1004「EnvelopeVisibleメソッドは失敗しました。Workbookオブジェクト」となります。
なお、エクセルのバージョンは2010、Outlookは2007です。
> HTML形式ではダメなんでしょうか
貼り付けたあと、編集が可能ならOKです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
このQ&Aを見た人はこんなQ&Aも見ています
-
「環境が人を育てる」って本当?環境によって人格や生き方は本当に変わるのか
環境が人生に与える影響は実際どれほどのものなのか、専門家の田宮由美さんに伺った。
-
ExcelVBAでOutlookにセル内容を送る
その他(プログラミング・Web制作)
-
Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを
Visual Basic(VBA)
-
エクセルVBAでOutlookメールの書式を変える
Excel(エクセル)
-
-
4
VBAのフォント変更(エクセルからoutlookのメール作成において)
Visual Basic(VBA)
-
5
VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
"***@***.ocn.ne.jp"の"@***"は...
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
送信エラーの際、CCには届い...
-
失礼な文とは分からず、先生に...
-
一度聞いたかも知れないのをっ...
-
【身に覚えのないApple ID 確認...
-
送信しても『Mail System Error...
-
通帳口座番号 メールで送っても...
-
メールの一斉送信で非対象者に...
-
メール送信すると以下のような...
-
Winmail.dat ファイルが開けない
-
自分のアドレスにCCを送信す...
-
既婚者の異性とメールするのは...
-
訳せる方お願いします!!
-
URLをコピーしてメールにリ...
-
メールの最後に「それでは失礼...
-
ソースネクストという会社の広...
-
空メールって何も書かなくてい...
-
エクセルを更新したらメールが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
受信メールの添付ファイル忘れ...
-
お祝い金を徴収するメールの書き方
-
失礼な文とは分からず、先生に...
-
windowsメールとOutlookメール...
-
送信エラーの際、CCには届い...
-
URLをコピーしてメールにリ...
-
Winmail.dat ファイルが開けない
-
"***@***.ocn.ne.jp"の"@***"は...
-
メール送信すると以下のような...
-
株式会社NSCと言う所から、現金...
-
一度聞いたかも知れないのをっ...
-
通帳口座番号 メールで送っても...
-
iphoneからメールで写真を送付...
-
訳せる方お願いします!!
-
送信しても『Mail System Error...
-
メールの書き方 保護者から先生へ
-
OUTLOOK2016(「メッセージが変...
-
相手にメールを送信したら、 Ea...
-
既婚者の異性とメールするのは...
-
詐欺メールでしょうか?
おすすめ情報