Envíe la (s) hoja (s) a una o más personas usando VBA en Microsoft Excel

Anonim

Agregue una nueva hoja, cambie el nombre de la hoja a correo.
Cada correo que desee enviar utilizará 3 columnas.

  1. en la columna A: ingrese la hoja o el nombre de las hojas que desea enviar.
  2. en la columna B, ingrese la dirección de correo electrónico.
  3. en la columna C: el título del asunto aparece en la parte superior del mensaje de correo electrónico.

Columna A: C ingrese información para el primer correo y puede usar las columnas D: F para el segundo.
puede enviar 85 correos electrónicos diferentes de esta manera (85 * 3 = 255 columnas).

 Sub Mail_sheets () Dim MyArr As Variant Dim last As Long Dim shname Tan Long Dim a As Integer Dim Arr () As String Dim N As Integer Dim strdate As String For a = 1 To 253 Paso 3 Si ThisWorkbook.Sheets ("mail" ) .Cells (1, a) .Value = "" Luego salga de la sub aplicación. ScreenUpdating = False last = ThisWorkbook.Sheets ("mail"). Cells (Rows.Count, a) .End (xlUp) .Row N = 0 Para shname = 1 Hasta el final N = N + 1 ReDim Preserve Arr (1 To N) Arr (N) = ThisWorkbook.Sheets ("mail"). Cells (shname, a) .Value Next shname ThisWorkbook.Worksheets (Arr). Copiar strdate = Format (Fecha, "dd-mm-aa") & "" & Format (Hora, "h-mm-ss") ActiveWorkbook.SaveAs "Parte de" & ThisWorkbook.Name _ & "" & strdate & " .xls "Con ThisWorkbook.Sheets (" mail ") MyArr = .Range (.Cells (1, a + 1), .Cells (Rows.Count, a + 1) .End (xlUp)) Finalizar con ActiveWorkbook.SendMail MyArr , ThisWorkbook.Sheets ("mail"). Cells (1, a + 2) .Value ActiveWorkbook.ChangeFileAccess xlReadOnly Kill ActiveWorkbook.FullName ActiveWorkbook.Close False Application.ScreenUpdating = True Siguiente a End Sub