Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Excel 2019)
VBAによるメール作成
投稿日時: 22/05/24 04:40:17
投稿者: nexfinity0215

お世話になります。
Excel VBAについて皆様のお力をお借りできたと思い質問致しました。
 
やりたいこと:
@VBAでセル内容を画像として、貼り付けて、Outlookを起動し送信する。
A”引継ぎ連絡表”の全セル内容(A1:N41)を画像としてコピーし、Outlook本文に貼り付ける
B”メール設定(引継ぎ連絡表)”で、宛先・件名・本文など指定
 
上記の内容は、下記のコードで出来たのですが、追加で、別シート(2枚)の内容も、引継ぎ連絡表の下に同じく画像として貼り付けたいです。
勤怠報告の2枚は、2枚とも範囲A1:O25になります。
 
可能でしょうか?
また、下記のコードだと、
Worksheets("引継ぎ連絡表").Activateで一度Activeにしないと、うまく動作しません…
ws○と定義して、やると.Shapes(Selection.ShapeRange.Name)でオブジェクトエラーがでますので、そこもご指導いただけたらと思います。
 
お手数をおかけしますが、よろしくお願いいたします。
 
 
 
 
 
Sub Mail ()
Dim ws1 As Worksheet
Set ws1 = Worksheets("メール設定(引継ぎ連絡表)")
Dim Ap As Object
Dim M As Object
Set Ap = CreateObject("Outlook.Application")
Set M = Ap.CreateItem(0)
Dim subject As String, mailbody As String, attachedfile As String
Dim i As Long
Dim mailaddress As Variant, maillist As String
 
With ws1
 mailaddress = .Range("B7:B16").Value
 For i = LBound(mailaddress) To UBound(mailaddress)
  maillist = maillist & ";" & mailaddress(i, 1)
 Next
End With
 
 subject = Replace(ws1.Range("B2").Value, "{日付}", Date)
 mailbody = ws1.Range("B3").Value
 attachedfile = ws1.Range("B4").Value
 
 M.BodyFormat = 2
 M.subject = subject
 M.To = maillist
 
Worksheets("引継ぎ連絡表").Activate
  Range("A1:N41").CopyPicture Appearance:=xlScreen, Format:=xlPicture
  Range("A1").Select
 ActiveSheet.Pictures.Paste.Select
With ActiveSheet.Shapes(Selection.ShapeRange.Name)
 .Width = 800
 .Height = 600
End With
 ActiveSheet.Shapes(Selection.ShapeRange.Name).Copy
 
 With M.GetInspector.WordEditor.Windows(1).Selection
  TypeText = mailbody
   .TypeText Chr(13)
    .Paste
 End With
 If attachedfile <> "" Then
     M.Attachments.Add (ThisWorkbook.Path & "\" & attachedfile)
 End If
 
 M.Display
  Application.Wait Now() + TimeValue("00:00:05")
   'M.Send ←わざとコメントアウトしてます
 ActiveSheet.Shapes(Selection.ShapeRange.Name).Delete
  Application.CutCopyMode = False
End Sub

回答
投稿日時: 22/05/24 06:05:14
投稿者: WinArrow
投稿者のウェブサイトに移動

画像をメール本文に貼り付けるのではなく、
一旦、画像ファイルとして保存し、添付ファイルにする方法は如何でしょうか?
 
そうすれば、いちいちシートをアクティブにする必要もありません。

投稿日時: 22/05/24 06:24:21
投稿者: nexfinity0215

ご返信ありがとうございます。
それはちなみに、本文に組み込めますか?
純粋に添付ファイルだとダメみたいで…

回答
投稿日時: 22/05/24 06:38:46
投稿者: WinArrow
投稿者のウェブサイトに移動

↓「セル範囲を画像ファイルで保存する」を紹介します。
https://vba-create.jp/vba-copypicture-save-png/

投稿日時: 22/05/24 14:51:35
投稿者: nexfinity0215

こちらの件は解決しました。
ありがとうございました。