こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルからの自動送信メールの件名にセルの値

いつもお世話になっております。
先日ここでエクセルから自動でPDFファイルを作成し所定の宛先に自動送信するコードを教わって使い始めたのですが、もう一息改善できれば非常にありがたいのですが当方の実力ではどこか弄ると全く動かなくなるのでHELPです。

やりたいのはエクセルの表がリンクで作成されて、そのエクセルの表だけをPDFで決まった宛先に送付して「送信完了」となるのですが、メールの件名をエクセルの決まったセルの文字を引っ張ってくるようにできれば本当にマクロボタン1クリックで仕事が完了するので何とか助けていただきたく。
つまり下記のコードの件名の .Subject = "結果報告書"に「A1セルの文字」を入れたいのです。

例えば表の参照元シートのA1の製品名「○○」とA2に「結果報告書」でB1に=A1&A2で「○○結果報告書」として件名にB1が入れば理想的ですが、件名に品名(A1)が入るだけでも十分ですので、よろしくお願い致します。

Sub Test()
Dim FilePath As String
Dim OutlookApp As Object
Dim OutlookMail As Object

On Error Resume Next
FilePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\結果報告書.pdf"
Worksheets("結果報告書").ExportAsFixedFormat Type:=xlTypePDF, Filename:=FilePath
Set OutlookApp = CreateObject("Outlook.Application")
Set OutlookMail = OutlookApp.CreateItem(0)
With OutlookMail
.To = "****@******" 'メール宛先"
.CC = "" 'メールのCC
.BCC = "" 'メールのBCC
.Subject = "結果報告書" 'メールの件名
.Body = "表題の件添付の通りです。" 'メールの本文
.Attachments.Add FilePath '添付ファイル
.Send
End With

MsgBox "送信完了"
End Sub

投稿日時 - 2018-10-04 13:14:51

QNo.9544134

困ってます

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

Sub Test()
  Dim FilePath As String, strSub As String
  Dim OutlookApp As Object
  Dim OutlookMail As Object

  'On Error Resume Next
  FilePath = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\結果報告書.pdf"
  'Sheet2の結果報告書の特定のセルに品名
  strSub = Worksheets("Sheet2").Range("A1").Value & "の結果報告書"
  Worksheets("結果報告書").ExportAsFixedFormat Type:=xlTypePDF, FileName:=FilePath
  Set OutlookApp = CreateObject("Outlook.Application")
  Set OutlookMail = OutlookApp.CreateItem(0)
  With OutlookMail
    .To = "****@******"
    .CC = ""
    .BCC = ""
    .Subject = strSub
    .Body = "表題の件添付の通りです。"
    .Attachments.Add FilePath
    .Send
  End With
  MsgBox "送信完了"
End Sub

投稿日時 - 2018-10-04 22:59:09

補足

欲が出て品名に続きLOT Noも入れたくなったので、3つの文字列や並び順を試すたびに出るエラーメッセージにもめげずに頑張って、シート名を変えたりすることでほぼ完璧に思ったようにできるようになりました。

投稿日時 - 2018-10-05 12:00:59

お礼

わざわざOutLookを入れて動作確認してくださった甲斐があり、当方の思った通りの動作ができるようになりました。

本当に感謝です。
他の報告書にも使えそうなので頑張ってみます。

助かりました。

投稿日時 - 2018-10-05 12:01:13

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>表の参照元シートのA1の製品名「○○」
Worksheets("結果報告書") にWorkSheets(○×△)を参照元にしたグラフが有り
WorkSheets(○×△).Rang("A1")の値をメールの件名に使いたいのですか
WorkSheets(○×△) シート名は固定しないのですか

投稿日時 - 2018-10-04 16:09:58

補足

何度もすみません。
シート名は固定です。

申し訳ありませんが、少し要求が変わりました。
参照元のSheet1「計算表」は関係なく、計算表から結果を引っ張って出来上がったSheet2の「結果報告書」の特定のセルの文字(製品名)をメールの件名に入れたいのですが。

参照元の計算表(Sheet1)で複数の品名を扱うので、Sheet2の結果報告書の特定のセルに品名、例えば(ABC)を入れます。
この方が使いやすく、入力を忘れないので。

メールの件名に「ABC」+「の結果報告書」と表示させることで、PDFを開かなくてもどの品名のメール(報告書)か区別できようになると自分の保存メールでも受信者にもわかりやすいので。

最初はここまで気づかなかったのですが、PDFの自動送信が出来てみると欲が出てきてしまいました。

既に報告書シートの印刷範囲外に「送信ボタン」を作って1クリックで送信できることまで確認しましたので何卒よろしくお願いいたします。

やりたいことが抜けていたり、変わったりして申し訳ありません。

投稿日時 - 2018-10-04 21:56:31

あなたにオススメの質問