下記のコードがあります このコードはシート№2のシート名が「提出シート」の一部のみをExcelファイルにて保存出来るコードです。 このExcelファイルを添付ファイルとしてOutlookのメールで送る方法を教えてください。
Sub Sub メール送信() Dim mainB As Workbook Set mainB = ThisWorkbook Call シートをコピー2(mainB) End Sub Sub シートをコピー2(MB As Workbook) Dim WB As Workbook Dim WS As Worksheet MB.Sheets(2).Columns("B:AD").Copy Workbooks.Add Set WB = ActiveWorkbook Set WS = WB.Sheets(1) With WS .Range("B1").Select ActiveSheet.Paste .Range("B1:AD195").Copy .Range("B1").PasteSpecial Paste:=xlPasteValues .Rows("49:136").Delete End With With Application.Dialogs(xlDialogSaveAs) .Show Arg1:=MB.Sheets(2).Range("P1").Value End With End Sub
シート名が「提出シート」に 下記のセル値があります。
1.送信先 は4名になります。
1の送信先はセルAE2値
2の送信先はセルAE3値
3の送信先はセルAE4値
4の送信先はセルAE5値です、1の送信先を代表にして残りの2~4迄をCCでも構いません。
2.件名 セル値P1値でお願いします。
3.本文 「お世話になっております。」
「受付担当者様」
「受付シートをお送りいたします。」
「ご確認をよろしくお願いいたします。」 の4行でお願いいたします。 何卒よろしくお願いいたします。
非常に困ってます。
具体的なコードをおねがいいたします。
No.7ベストアンサー
- 回答日時:
シートをコピー2の Dim ws As Worksheet と
下の方で同じく Dim ws As Worksheet が 同じ変数で宣言している
ため、添付のエラーが出ています。
シートをコピー2の ws の変数を、エラーの出ている行以降で使わない
なら、エラーの行を削除しても構いません。Dim ws As Worksheet を消す
もし使うなら、Dim ws As Worksheet のwsの変数を他のものに変更し
エラー行より下のwsを、変更後の変数に全て変える必要があります。
昨日より長時間にわたり私の様な素人に親切に何度も何度もご指示頂きましてありがとう御座います。私の頭の中がごちゃごちゃになってしまいましたので、一旦、ベストアンサーに選ばせて頂き、もう少し、自分で考えて又、機械がありましたら質問させて頂きます。
この度は本当にありがとう御座いました。
No.6
- 回答日時:
今回も、Sub ~()と、End Subが対になっていないからかと。
Sub SendMail_with_Files()がないですね。 消されたのでしょうかね。
Call SendMail_with_Filesで、行き先がないからかと。
下記の2行を消せば、今回のエラーはなくなりますが。。。
Call SendMail_with_Files ← 消す
End Sub ← 消す
Dim ws As Worksheet ここから残す
No.5
- 回答日時:
No.1の者です。
私のPCに、Outlookの環境がないので、最後までテストができません。
一番最初に提示したリンク先で、準備2. VBEで外部ライブラリへの参照設定でOutlook型を追加のレ点チェックはできているでしょうか?
元々質問者さんが提示してあるプログラムは、Excelファイルをどこかへ
保存するものなのでしょうか? その保存したパスが必要になります。
あと、SendMail_with_Filesのプログラムが独立しているので、質問者さん
のプログラムの最後に、call SendMail_with_Files とかが必要です。
下記は、質問者さんしか分からないので、その部分の修正は終わっている?
><<<適宜修正の部分を修正して下さい。
>シート名と、保存したファイルのパスの2か所
Set ws = ThisWorkbook.Worksheets("Sheet1") '<<<適宜修正
Sheet1を、下記が書かれているシート名へ変更が必要
1.送信先 は4名になります。
1の送信先はセルAE2値
2の送信先はセルAE3値
3の送信先はセルAE4値
4の送信先はセルAE5値
files(0) = ws.Range("B8").Value ' <<<適宜修正 保存したブックのパスを指定
保存したパスが必要。 固定なら、上記を下記の様に変更。
手動でパスを設定するなら、そのパスを変数に入れておいて、変数を指定。
files(0) = "パス~.xlsx"’固定のパスなら
files(0) = 変数
No.4
- 回答日時:
No.1の者です。
質問される前にご自分でプログラムを見られた方が良いかと思うのですが。
メッセージを見れば、原因がある程度分かると思うのですが。。。
失礼ですが、エクセル小僧さんは、VBAを知らない方でしょうか?
下記のどちらかが不要です。
Sub メール送信()
Sub Macroの保存2()
Subで始まったら、End Subが対になります。 基本です。。。
Subが続けて出てくる事はありません。
No.2
- 回答日時:
No.1の者です。
下記で、大半はできているかと思います。
<<<適宜修正の部分を修正して下さい。
シート名と、保存したファイルのパスの2か所
動作確認はしていませんので、質問者さんの方で動作確認して下さい。
提示されているプログラムが組めるなら、下記に必要なセルを入れるだけで
大半が完成できると思うのですが。。。
こちらは一旦閉じて、エラーが発生した場合は、修正したマクロを提示
して、再度質問されたらと思います。
'プログラム0|変数設定の指定
Option Explicit
'プログラム1|プログラム開始
Sub SendMail_with_Files()
'プログラム2|シート設定
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") '<<<適宜修正
'プログラム3|Outlookアプリケーションを起動
Dim outlookObj As Outlook.Application
Set outlookObj = New Outlook.Application
'プログラム4|Outlookメールを作成
Dim mymail As Outlook.MailItem
Set mymail = outlookObj.CreateItem(olMailItem)
'プログラム5|メール情報を設定
mymail.BodyFormat = 3 'リッチテキストに変更
mymail.To = ws.Range("AE2").Value 'To宛先
mymail.CC = ws.Range("AE3").Value & " ; " & ws.Range("AE4").Value & " ; " & ws.Range("AE5").Value 'cc宛先
' mymail.BCC = ws.Range("B4").Value 'bcc宛先
mymail.Subject = ws.Range("P1").Value '件名
'プログラム6|メール本文を設定
Dim mailbody As String, credit As String
mailbody = "お世話になっております。" & vbCrLf & "受付担当者様" & vbCrLf & "受付シートをお送りいたします。" & vbCrLf & "ご確認をよろしくお願いいたします。"
' credit = ws.Range("B7").Value
' mymail.Body = mailbody & vbCrLf & vbCrLf & credit & vbCrLf
'プログラム7|メール本文の文字数をカウント
Dim wordcount As Long
wordcount = Len(mailbody) + 1
'プログラム8|メール表示
mymail.Display
'プログラム9|メールに添付するファイル名を取得
Dim files(0) As String
files(0) = ws.Range("B8").Value ' <<<適宜修正 保存したブックのパスを指定
' files(1) = ws.Range("B9").Value
' files(2) = ws.Range("B10").Value
'プログラム10|メールに複数の添付ファイルを設定
Dim attachedfile As String
Dim i As Long
For i = 0 To 0
If Not files(i) = "" Then
attachedfile = ThisWorkbook.Path & "\" & files(i)
mymail.Attachments.Add attachedfile, olByValue, wordcount + i
End If
Next
'プログラム11|メール保存、送信
'mymail.Save '下書き保存
'mymail.Send 'メール送信
'プログラム12|オブジェクト解放
Set mymail = Nothing
Set outlookObj = Nothing
'プログラム13|プログラム終了
End Sub
No.1
- 回答日時:
こんにちは。
直接の回答ではありませんが、
下記に、Excelから、メールに添付して送信するマクロの例がありますので、
先ずは、それを参考に作成されては?と思います。
https://fastclassinfo.com/entry/vba_outlook_atta …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
VBAの天才来てください
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
エクセルのマクロでアクティブ...
-
VBA 存在しないシートを選...
-
同じ作業を複数のシートに実行...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
【VBA】シート名に特定文字が入...
-
【VBA】色のついたシート名を取得
-
ExcelVBA:複数の特定のグラフ...
-
ExcelVBA シート名を複数セルか...
-
XL:BeforeDoubleClickが動かない
-
VBAを用いて繰り返し自動的...
-
excelのマクロで該当処理できな...
-
VBA ユーザーフォーム上のチェ...
-
Excel マクロについての相談
-
特定の文字を含むシートだけマ...
-
エクセル・マクロ シートの非...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
同じ作業を複数のシートに実行...
-
ExcelVBA シート名を複数セルか...
-
【ExcelVBA】全シートのセルの...
-
Excel マクロについての相談
-
VBA 存在しないシートを選...
-
実行時エラー'1004': WorkSheet...
-
特定の文字を含むシートだけマ...
-
ExcelのVBAのマクロで他のシー...
-
ブック名、シート名を他のモジ...
-
XL:BeforeDoubleClickが動かない
-
VBA 複数の各シートに行を追加...
-
エクセルのシート名変更で重複...
-
【Excel VBA】Worksheets().Act...
-
シートが保護されている状態で...
-
Excel VBA 複数行を数の分だけ...
-
for 文の 繰り返し処理に使える...
おすすめ情報
回答ありがとう御座いました。私も同じようなサイトをいくつか確認しましたが、中々上手く行きませんでした。
私が作成したコードに追加出来るコードを教えてください。
よろしくお願いいたします。
回答ありがとうございました
申し訳ありません
只今パソコンから離れたますので
明日
朝から確認させて頂きます
よろしくお願い致します
おはよう御座います。昨日はありがとう御座いました。
私のコードの後に貴殿のご指示通りにコードを全て設定しましたが、エラーが出てしまいました。
私のコード設定に不備があると思います。何度も申し分け有りません。
ご指示をお願いいたします。
エラーの画像をお送りいたします。
何度もありがとう御座います。
ご指示のコードを削除しましたが
又、別のエラーが出てしまいました。
申し分け有りません。解決方法をよろしくお願いいたします。
ご指示の通り自分で調べて見ます。
又、マクロ式ですが、以前私が設定したマクロ式と名前が変更になってます「M〇〇の保存2」
これは問題有りませんか?
後、新しく「SendMailwith_Files」のマクロ式が表示されております。
今回設定したいマクロ式は「メール送信」です。
よろしくお願いいたします。
よろしくお願いいたします。
マクロ式の画像をお送りします。
よろしくお願いいたします。
No.1 様 連絡が遅くなり申し分け有りません、私は最近マクロを設定し始めたばかりの素人より少し知識がある程度の者で、ご迷惑をお掛けして申し分け有りません、ふよう部分を削除しましたら、エラーは出ず、以前の状態で保存が出来るのですが、自動でメールが立ち上がりません、本当に申し分け有りませんがご指導よろしくお願いいたします。尚、現状のコードは私が設定したコードの下に貴殿のコードを設定しております。
何卒よろしくお願いいたします。
№1 様 連絡ありがとう御座いました。支持通りにSet ws = ThisWorkbook.Worksheets("提出シート") 'と記載
files(0) = ws.Range("B8").Value ' <<<適宜修正 保存したブックのパスを指定
files(0) = "パス~.xlsx"’にしましたが
又、エラーメッセージの後に「黄色い部分の表示」が出てしまいます。
前回出ていた、SendMail_with_Files は無くなりました。
時間をお掛けして申し分け有りません。解決方法をよろしくお願いいたします。
№1 様 回答ありがとう御座います。支持通りに削除をしましたら、又、新しいエラーが出てしまいました。色々作業を行っている内に「Sub SendMail_with_Files()」を消してしまったのかもしれません、「Sub SendMail_with_Files()」はコードにあった方がようでしょうか?
よろしくお願いいたします。