レスポンスは少し遅くなるかと思いますが、どうぞ宜しくお願いします。
###前提・実現したいこと
・エクセルで表にまとめた案件をメール送信する際、手動でコピペする手順を簡略化するため、
表の項目名と対象となる複数の行をOutlookのメールへコピーしたい。
・Excel2007、Outlook2007、Windows7 Pro を使用。
###発生している問題・エラーメッセージ
・2列目に「○」をつけた行を1行のみを選択した状態では「この選択範囲を送信する」
の表示だったが、項目名と「○」を入力した行をメール本文に入力しようとしたところ、
エクセルでは「このシートを送信する」ボタンが表示され、
メール本文にはシート全体がコピーされるようになってしまった。
###該当のソースコード
Excel
1Sub Send_Range() 2 3 ' 変数の宣言 4 Dim row_num As Integer 5 Dim MaxRow As Integer 6 Dim obj As Object 7 Dim r1 As Range 8 9 10 ' 最終行を取得 11 MaxRow = Range("A11").End(xlDown).Row 12 13 14 ' ○が見つからない場合メッセージを表示 15 Set obj = Worksheets("Sheet1").Cells.Find("○") 16 17 If obj Is Nothing Then 18 MsgBox "メール送信する行を「○」で指定してください", vbExclamation, "送信対象行が未選択です" 19 20 Else 21 MsgBox "メール送信します", vbInformation, "送信確認" 22 23 24 ' ○という文字列を探して行番号を取得する 25 row_num = Range(Cells(11, 2), Cells(MaxRow, 2)).Find("○").Row 26 27 28 ' Select the range of cells on the active worksheet. 29 30 ' 範囲をくっつけていく 31 32 With ActiveSheet 33 34 Set r1 = .Range(Cells(11, 1), Cells(11, 10)) 35 Set r1 = Application.Union(r1, .Range(Cells(row_num, 1), Cells(row_num, 10))) 36 37 End With 38 39 ' 範囲を選択 40 r1.Select 41 42 ' メール送信 43 ActiveWorkbook.EnvelopeVisible = True 44 45 46 With ActiveSheet.MailEnvelope 47 .Introduction = "report" 48 .Item.To = "xxxxx@aaa.com" 49 .Item.Subject = "report mail" 50 ' .Item.Send 51 52 End With 53 54 End If 55 56 57End Sub
###試したこと
・Application.Unionを使っての表の項目名を含めることはせず、「○」を付けた行を1行のみであればできました。
・項目名、○をつけた行の各セルの値を配列に入れて、メール本文作成時に配列から値を入れるようにすればいいのかな、
と思いましたが、まだうまくいっていません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。