Páginas

viernes, 31 de julio de 2015

VBA Outlook: Como extraer una tabla de un email y guardarla en un libro nuevo de Excel

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

1 comentario:

  1. Excelente tutorial.
    En la proxima ocasión le daré una breve lctura para saber de que se trata.

    saludos,

    ResponderEliminar