Экспорт таблицы Excel Excel в csv с использованием макроса

Я использую таблицы Excel в Excel 2010. Я бы хотел быстро экспортировать содержимое этих таблиц в * .csv.

Мой текущий рабочий процесс: 1. Выберите таблицу вручную. 2. Скопируйте содержимое в новую книгу. 3. Сохраните книгу как файл * .csv.

Желаемый рабочий процесс: 1. Выберите таблицу вручную. 2. Запустите макрос, который записывает в предварительно заданное имя файла.

Поскольку таблицы имеют уникальные имена (например, CurrentDataTable), существует ли функция, которая принимает имя таблицы, целевой файл и желаемый формат вывода и записывает выходной файл?

Нет встроенной команды или функции Excel, которые бы делали то, что вам нужно, но вы можете использовать VBA для ее программирования.

Следующий код может быть близок к тому, что вы ищете:

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 

Код предполагает, что у вас есть одна таблица на каждом листе. Он создает новую книгу, копирует таблицу в Лист 1 этой книги и сохраняет книгу как файл CSV с тем же именем, что и таблица.

Вот моя версия ответа chuff для Excel 2013. Он также отключает модальные диалоги:

 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 

Мне нужно было сделать то же самое, но нужно было указать, какие таблицы должны были экспортироваться в виде файлов CSV. Я создал диапазон с именем «ExportTables» с VBA следующим образом:

 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 
  • Оценка формулы дает неправильный результат
  • Удалить шаблон по умолчанию в Microsoft Excel 2010
  • Как переносить несколько строк в один столбец
  • Ошибка проверки данных, скрытая от окон замораживания?
  • Microsoft Excel 2010 Как ссылаться на таблицу на другой лист
  • Excel - преобразование числа в значение времени
  • Сравнение похожих текстовых строк в Excel
  • Объединение SUMIF () и SUBTOTAL () для динамического итога
  • Как сохранить автоматическое изменение формул и диапазонов формул форматирования?
  • Открытие книги Excel 2003 в Excel 2010 32-бит вызывает ложную циркулярную ссылку и сбои
  • Цвет фона альтернативной сетки в excel при изменении значения одного столбца?
  • Давайте будем гением компьютера.