Сохранение листа Excel в CSV-файлах с именем файла + имя листа с использованием VB

Я очень новичок в кодировании VB, я пытаюсь сохранить несколько таблиц excel-файлов в csv, я не знаю, как это сделать для нескольких листов, но я нашел способ сделать это для одного файла. Я нашел код на этом сайте, который очень полезен для того, что я пытаюсь сделать, только проблема в том, что файлы сохраняются с именем рабочего листа, но я пытаюсь сохранить их с исходным именем файла и рабочего листа, например именем filename_worksheet name , I попытался сделать это сам, но продолжайте получать ошибку, не могли бы вы посоветовать, что я делаю неправильно?

Код, который я использую, выглядит следующим образом:

  Public Sub SaveWorksheetsAsCsv() Dim WS As Excel.Worksheet Dim SaveToDirectory As String Dim CurrentWorkbook As String Dim CurrentFormat As Long CurrentWorkbook = ThisWorkbook.FullName CurrentFormat = ThisWorkbook.FileFormat ' Store current details for the workbook SaveToDirectory = "H:\test\" For Each WS In ThisWorkbook.Worksheets WS.SaveAs SaveToDirectory & WS.Name, xlCSV Next Application.DisplayAlerts = False ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat Application.DisplayAlerts = True ' Temporarily turn alerts off to prevent the user being prompted ' about overwriting the original file. End Sub 

5 Solutions collect form web for “Сохранение листа Excel в CSV-файлах с именем файла + имя листа с использованием VB”

Я думаю, это то, что вы хотите …

 Sub SaveWorksheetsAsCsv() Dim WS As Excel.Worksheet Dim SaveToDirectory As String Dim CurrentWorkbook As String Dim CurrentFormat As Long CurrentWorkbook = ThisWorkbook.FullName CurrentFormat = ThisWorkbook.FileFormat ' Store current details for the workbook SaveToDirectory = "H:\test\" For Each WS In ThisWorkbook.Worksheets Sheets(WS.Name).Copy ActiveWorkbook.SaveAs Filename:=SaveToDirectory & ThisWorkbook.Name & "-" & WS.Name & ".csv", FileFormat:=xlCSV ActiveWorkbook.Close savechanges:=False ThisWorkbook.Activate Next Application.DisplayAlerts = False ThisWorkbook.SaveAs Filename:=CurrentWorkbook, FileFormat:=CurrentFormat Application.DisplayAlerts = True ' Temporarily turn alerts off to prevent the user being prompted ' about overwriting the original file. End Sub 

У меня была аналогичная проблема. Данные на листе, который мне нужно сохранить в виде отдельного файла CSV.

Вот мой код за кнопкой команды


 Private Sub cmdSave() Dim sFileName As String Dim WB As Workbook Application.DisplayAlerts = False sFileName = "MyFileName.csv" 'Copy the contents of required sheet ready to paste into the new CSV Sheets(1).Range("A1:T85").Copy 'Define your own range 'Open a new XLS workbook, save it as the file name Set WB = Workbooks.Add With WB .Title = "MyTitle" .Subject = "MySubject" .Sheets(1).Select ActiveSheet.Paste .SaveAs "MyDirectory\" & sFileName, xlCSV .Close End With Application.DisplayAlerts = True End Sub 

Это работает для меня 🙂

Это то, что вы пытаетесь?

 Option Explicit Public Sub SaveWorksheetsAsCsv() Dim WS As Worksheet Dim SaveToDirectory As String, newName As String SaveToDirectory = "H:\test\" For Each WS In ThisWorkbook.Worksheets newName = GetBookName(ThisWorkbook.Name) & "_" & WS.Name WS.Copy ActiveWorkbook.SaveAs SaveToDirectory & newName, xlCSV ActiveWorkbook.Close Savechanges:=False Next End Sub Function GetBookName(strwb As String) As String GetBookName = Left(strwb, (InStrRev(strwb, ".", -1, vbTextCompare) - 1)) End Function 

Лучший способ узнать – записать макрос и выполнить точные шаги и посмотреть, какой код VBA он генерирует. вы можете пойти и заменить биты, которые хотите сделать родовыми (например, имена файлов и прочее)

Приведенный выше код отлично работает с одним незначительным недостатком; результирующий файл не сохраняется с расширением .csv. – Tensigh 2 дня назад

Я добавил следующее к коду, и он сохранил мой файл как csv. Спасибо за этот бит кода. Все работало, как ожидалось.

 ActiveWorkbook.SaveAs Filename:=SaveToDirectory & ThisWorkbook.Name & "-" & WS.Name & ".csv", FileFormat:=xlCSV 
  • Как объединить строки в столбце в одну ячейку в excel?
  • Левенштейн Расстояние в VBA
  • Как удалить или изменить фон заполняет все таблицы в документе Microsoft Word
  • Защита ячеек в Excel, но они могут быть изменены сценарием VBA
  • Самый простой способ прокрутки фильтрованного списка с помощью VBA?
  • Как выбрать переключатели по значению ячейки в Excel?
  • Как я могу определить, существует ли лист a в рабочей книге?
  • Как вставить изображение в Excel в указанной ячейке с помощью VBA
  • Как настроить «зубчатый массив» в VBA?
  • Выполнение SQL-запроса с помощью VBA и заполнение листом данных
  • Скребок сети супермаркетов Аргентины
  • Interesting Posts
    Давайте будем гением компьютера.