Para utilizar esta macro se necesita abrir el correo que contiene la tabla y especificar la direccion donde se guardará el archivo de excel.
Las claves son:
-La ventana abierta de outlook (el email) es in objeto "Inspector"
-El objeto inspector tiene un metodo "WordEditor" que convierte al mail en un objeto de Word
-El objeto de Word tiene la propiedad "Tables"
Sub guardarTabla()
'El correo abierto lo convierte a un objeto de word
Set correo = ActiveInspector.WordEditor
'Creo un objeto de excel y creo un libro nuevo
Set xl = CreateObject("Excel.Application")
Set reporte = xl.Workbooks.Add()
'Extrae la primera tabla del conjunto de tablas en el documento
'Si hubere mas tablas se especifica el numero
Set tabla = correo.Tables(1)
'Encuentra el numero de filas
numeroFilas = tabla.Rows.Count
'Encuentra el numero de columnas
numeroColumnas = tabla.Columns.Count
'Comienza a navegar por cada celda de la tabla
'Primero toma cada fila
For r = 1 To numeroFilas
'Luego va por cada columna
For c = 1 To numeroColumnas
celda = tabla.Rows(r).Cells(c)
celda = Left(celda, Len(celda) - 1) 'borra el ultimo caracter del texto
'pega el valor en la celda del archivo de excel.
reporte.Sheets(1).Cells(r, c) = celda
Next c
Next r
'ahora creo un numero secuencial para agregar al nombre de archivo
'basado en la fecha y tiempo actual
numeroSecuencial = Format(Now(), "YYMMDDhhss")
'finalmente guardo el archivo.
reporte.SaveAs ("D:\OutlookGeneratedFile" & numeroSecuencial & ".xlsx")
End Sub
Excelente tutorial.
ResponderEliminarEn la proxima ocasión le daré una breve lctura para saber de que se trata.
saludos,