Exporte la tabla de Excel de Office a csv utilizando una macro

Estoy utilizando tablas de Excel en Excel 2010. Me gustaría exportar rápidamente el contenido de estas tablas a * .csv.

Mi flujo de trabajo actual: 1. Seleccione la tabla manualmente 2. Copie el contenido en un nuevo libro 3. Guarde el libro como un archivo * .csv

Flujo de trabajo deseado: 1. Seleccione manualmente la tabla 2. Ejecute una macro que escriba en un nombre de archivo predefinido

Dado que las tablas tienen nombres únicos (por ejemplo, CurrentDataTable), ¿hay una función que toma el nombre de la tabla, el archivo de destino y el formato de salida deseado y escribe el archivo de salida?

No hay ningún comando o función incorporada de Excel que haga el tipo de cosa que usted desea, pero usted puede utilizar VBA para programarlo.

El siguiente código puede estar cerca de lo que está buscando:

Sub ExportTable() Dim wb As Workbook, wbNew As Workbook Dim ws As Worksheet, wsNew As Worksheet Dim wbNewName As String Set wb = ThisWorkbook Set ws = ActiveSheet Set wbNew = Workbooks.Add With wbNew Set wsNew = wbNew.Sheets("Sheet1") wbNewName = ws.ListObjects(1).Name ws.ListObjects(1).Range.Copy wsNew.Range("A1").PasteSpecial Paste:=xlPasteAll .SaveAs Filename:=wb.Path & "\" & wbNewName & ".csv", _ FileFormat:=xlCSVMSDOS, CreateBackup:=False End With End Sub 

El código asume que tiene una tabla en cada hoja de cálculo. Crea un nuevo libro, copia la tabla en la Hoja 1 de ese libro y guarda el libro como un archivo CSV con el mismo nombre que la tabla.

Esta es mi versión de la respuesta de chuff para Excel 2013. También deshabilita los cuadros de diálogo modales:

 Sub ExportCSV() Dim wb As Workbook, wbNew As Workbook Dim ws As Worksheet, wsNew As Worksheet Set wb = ThisWorkbook Set ws = ActiveSheet Set wbNew = Workbooks.Add Application.DisplayAlerts = False With wbNew Set wsNew = wbNew.Sheets("Sheet1") ws.Rows.Copy wsNew.Paste .SaveAs Filename:=ws.name & ".csv", FileFormat:=xlCSV, CreateBackup:=True wsNew.Delete End With Windows(ws.name & ".csv").Activate ActiveWindow.Close Application.DisplayAlerts = True End Sub 

Necesitaba hacer lo mismo, pero necesitaba especificar qué tablas debían exportarse como archivos CSV. He creado un rango llamado 'ExportTables', con el VBA como sigue:

 Public Sub Export() Dim i As Integer Dim iMax As Integer Dim sTable As String iMax = Range("ExportTables").Rows.Count For i = 1 To iMax sTable = Range("ExportTables").Cells(i, 1).Value Call ExportTable(sTable) Next i End Sub Public Sub ExportTable(tableName As String) Dim wkb As Workbook Dim wkbNew As Workbook Dim wks As Worksheet Dim wksNew As Worksheet Set wkb = ThisWorkbook Application.Goto Reference:=tableName Set wks = ActiveSheet Set wkbNew = Workbooks.Add Set wksNew = wkbNew.Sheets(1) wks.ListObjects(tableName).Range.Copy wksNew.Range("A1").PasteSpecial Paste:=xlPasteValues Application.DisplayAlerts = False wkbNew.SaveAs Filename:=wkb.Path & "\" & tableName & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False wkbNew.Close SaveChanges:=False Application.DisplayAlerts = True ' Release object variables. Set wkb = Nothing Set wkbNew = Nothing Set wks = Nothing Set wksNew = Nothing End Sub