title: Macro to paste only visible cells into email body not working
body: <p>I am trying to get the below macro to paste in an outlook email body the visible cells from a sheet. The macro works great, the only problem is when people reply to the email, suddenly all the rows are now visible. It appears that when the initial email is sent, it must pasted the entire sheet but keep the formatting to hide the filtered rows, but when people go to reply, that all goes away. Any ideas?</p>
  
  <pre><code>Sub Send_Range_Or_Whole_Worksheet_with_MailEnvelope()
      'Working in Excel 2002-2013
      Dim AWorksheet As Worksheet
      Dim Sendrng As Range
      Dim rng As Range
  
      On Error GoTo StopMacro
  
      With Application
          .ScreenUpdating = False
          .EnableEvents = False
          .Application.DisplayAlerts = False
      End With
  
      'Fill in the Worksheet/range you want to mail
      'Note: if you use one cell it will send the whole worksheet
      Set Sendrng = Worksheets("APP").Range("A1").SpecialCells(xlCellTypeVisible)
  
      'Remember the activesheet
      Set AWorksheet = ActiveSheet
  
      With Sendrng
          ' Select the worksheet with the range you want to send
          .Parent.Select
  
          'Remember the ActiveCell on that worksheet
          Set rng = ActiveCell
  
          'Select the range you want to mail
          .Select
  
          ' Create the mail and send it
          ActiveWorkbook.EnvelopeVisible = True
  
          With .Parent.MailEnvelope
              ' Set the optional introduction field thats adds
              ' some header text to the email body.
              .Introduction = "Below are the accounts currently falling outside of our High Cash tolerance. Please let us know if any action is needed. Thanks."
  
              With .Item
                  .To = "test@email.com"
                  .CC = ""
                  .BCC = ""
                  .Subject = "APP High Cash"
                  .Send
              End With
  
          End With
  
          'select the original ActiveCell
          rng.Select
      End With
  End Sub
  </code></pre>