• ベストアンサー

VBA+BASP21 メール送信

BASP21を利用しエクセルシートのある範囲部分をbodyとしてメール送信をしたいのですが、以下のように範囲指定はできませんでしょうか?以下でトライしたら実行できないのですがCells(1,1)のようにセル1個ならメール送信できます。何か方法ありませんか?よろしくお願いします。 mailBody = Worksheets(2).Range("A1:N30")

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

  • ベストアンサー
  • singlecat
  • ベストアンサー率33% (139/418)
回答No.1

mailBodyは"テキスト"ですから、エクセルの範囲は使えませんよ。 範囲をループで回して結合mailBodyに結合するればどうですか?

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 Excelのシートのレイアウトをそのまま出す方法は、.Value プロパティをいくらつないでも、崩れてしまいますから、一旦、PRN型で出力してあげればよいのではないでしょうか。大きさもそれほどではないので、ファイルシステム・オブジェクトで、ReadAll で読めるように考えました。 Sub TextCutting()   Dim mPath As String   Dim fn As String   Dim acSh As Worksheet   Dim mBuf As String   mPath = ActiveWorkbook.Path & "\"   fn = ActiveWorkbook.Name   fn = Mid(fn, 1, InStrRev(fn, ".") - 1)   Set acSh = Worksheets(1)   ActiveSheet.Copy   With ActiveSheet     .Cells.Clear     acSh.Range("A1:N30").Copy     .Range("A1:N30").PasteSpecial (xlPasteValues)     .SaveAs mPath & fn & ".txt", xlTextPrinter     ActiveWorkbook.Close False   End With   With CreateObject("Scripting.FileSystemObject")     mBuf = .OpenTextFile(mPath & fn & ".txt").ReadAll     Kill mPath & fn & ".txt"   End With   'MsgBox mBuf 'mBuf に蓄えられます。 End Sub