Note: The other languages of the website are Google-translated. Back to English

Как выполнить пакетное преобразование нескольких файлов CSV в файлы XLS (X) в Excel?

Для вас очень легко преобразовать файл CSV в файл XLS или XLSX, применив функцию «Сохранить как». Однако преобразование нескольких файлов CSV в файлы XLS или XLSX из папки занимает много времени, так как их можно сохранять по одному вручную. Здесь я представляю код макроса для быстрого пакетного преобразования всех файлов CSV в файлы XLS (x) из папки.

Пакетное преобразование файлов CSV в файлы XlS (X) с помощью кода макроса


Пакетное преобразование файлов CSV в файлы XlS (X) с помощью кода макроса

Чтобы преобразовать несколько файлов CSV из одной папки в файлы XLS (X), вы можете сделать следующие шаги:

1. Включите новую книгу, нажмите Alt + F11 ключи для открытия Microsoft Visual Basic для приложений окно и щелкните Вставить > Модули. Смотрите скриншот:
пакетное преобразование документов cvs xls 1

Внимание: Убедитесь, что все файлы CSV, которые вы хотите преобразовать, закрыты.

2. Затем вставьте ниже код макроса в Модули сценарий и нажмите F5 ключ для запуска кода.

VBA: конвертировать CSV в XLS

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

3. В появившемся диалоговом окне выберите указанную папку, содержащую файлы CSV, которые вы хотите преобразовать. Смотрите скриншот:
пакетное преобразование документов cvs xls 2

4. Нажмите OK, все файлы CSV в выбранной папке преобразованы в файлы XLS.
пакетное преобразование документов cvs xls 3

Функции: Если вы хотите преобразовать файлы CSV в файлы XLSX, используйте приведенный ниже код VBA.

VBA: преобразование файлов CSV в XLSX

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

быстро конвертировать или экспортировать диапазон листа для разделения файлов XLS / Word / PDF или других форматов за один раз

Обычно Excel не поддерживает возможность быстрого экспорта или сохранения диапазона в виде файла CSV или Excel. Если вы хотите сохранить диапазон данных в виде CSV или книги в Excel, вам может потребоваться использовать макрос VBA для этого или скопировать диапазон в буфер обмена и вставить его в новую книгу, а затем сохранить книгу как CSV или Рабочая тетрадь. Kutools for Excel дополняет Excel с помощью Диапазон экспорта в файл утилита для пользователей Excel, которые хотят быстро выполнить следующие операции :  Нажмите для 30-дневная полнофункциональная бесплатная пробная версия!
doc экспорт диапазона ячеек в файл
 
Kutools for Excel: с более чем удобными надстройками Excel 300, которые можно попробовать бесплатно без ограничений в 30 дней.

Относительные статьи:


Лучшие инструменты для работы в офисе

Kutools for Excel решает большинство ваших проблем и увеличивает вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма ...
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон...
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы... Предотвращение дублирования ячеек; Сравнить диапазоны...
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор ...
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое ...
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии...
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом ...
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF...
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
вкладка kte 201905

Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
офисный дно
Сортировать комментарии по
Комментарии (37)
Оценок пока нет. Оцените первым!
Этот комментарий был сведен к минимуму модератором на сайте
Я хочу сделать наоборот — конвертировать XLS в CSV. этот скрипт работает?
Sub CSVtoXLS()
'ОбновитьExtendoffice20170814
Dim xFd как FileDialog
Dim xSPath как строка
Dim xXLSFile как строка
Dim xWsheet как строка
Приложение.DisplayAlerts = False
Application.StatusBar = Истина
xWsheet = ActiveWorkbook.Имя
Установите xFd = Application.FileDialog (msoFileDialogFolderPicker)
xFd.Title = "Выберите папку:"
Если xFd.Show = -1 Тогда
xSPath = xFd.SelectedItems(1)
Еще
Exit Sub
End If
Если Right(xSPath, 1) <> "\" Тогда xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Делать, пока xXLSFile <> ""
Application.StatusBar = "Преобразование: " & xXLSFile
Workbooks.Open Имя файла: = xSPath и xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath и xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet).Активировать
xXLSFile = Каталог
Петля
Application.StatusBar = Ложь
Application.DisplayAlerts = True
End Sub
Этот комментарий был сведен к минимуму модератором на сайте
Подпрограмма ConvertCSVToXlsx()



Dim myfile как строка

Dim oldfname как строка, newfname как строка

Затемнить рабочий файл

Dim имя_папки как строка



Приложение.DisplayAlerts = False

Приложение.ScreenUpdating = False



' Захватить имя текущего файла

мой файл = ActiveWorkbook.Имя



' Установить имя папки для работы

имя_папки = "D:\tmp\"



' Перебрать все файлы CSV в папке

рабочий файл = Dir(Имя папки и "*.CSV")

Делать, пока рабочий файл <> ""

'Открыть CSV-файл

Workbooks.Open Filename:=folderName & workfile

' Захватить имя старого CSV-файла

oldfname = ActiveWorkbook.ПолноеИмя

' Конвертировать в XLSX

newfname = имя_папки & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

ActiveWorkbook.SaveAs Имя файла:=newfname, Формат файла:=xlOpenXMLWorkbook, CreateBackup:=True

ActiveWorkbook.Close

' Удалить старый файл CSV

Убить старое имя

Windows(myfile).Активировать

рабочий файл = Каталог ()

Петля



Application.DisplayAlerts = True

Application.ScreenUpdating = True



End Sub
Этот комментарий был сведен к минимуму модератором на сайте
«Совет: если вы хотите преобразовать файлы CSV в файлы XLXS, вам просто нужно изменить .xls на .xlsx в макросе ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, «.csv», «.xls», vbTextCompare)».

Я попробовал это, и Excel не смог открыть полученные файлы. Я получил следующее сообщение: "Excel не может открыть файл "имя_файла.xlsx", поскольку формат файла или расширение файла недопустимы. Убедитесь, что файл не поврежден и что расширение файла соответствует формату файла".

Однако сценарий был успешно преобразован в .xls.
Этот комментарий был сведен к минимуму модератором на сайте
Я не нашел эту проблему раньше, спасибо за ваш правильный комментарий. Я исправил совет.
Этот комментарий был сведен к минимуму модератором на сайте

Этот комментарий был сведен к минимуму модератором на сайте
Большое спасибо за ваш отличный скрипт для преобразования CSV в XLS. Это гораздо полезнее для моей работы
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

Ваш скрипт великолепен, но он не преобразует CSV, разделенные точкой с запятой. Не могли бы вы опубликовать решение для них?

спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Извините, здесь у меня нет никакого решения, возможно, вы можете разместить свой вопрос на нашем форуме, кто-то другой может вам помочь. https://www.extendoffice.com/forum.html
Этот комментарий был сведен к минимуму модератором на сайте
я могу опоздать, я только что столкнулся с проблемой, когда мне нужно было преобразовать файлы CSV с точками с запятой, и я добавил это в код, и это сработало, надеюсь, это поможет кому-то

Измените «Workbooks.Open Filename:=xSPath & xCSVFile» на это «Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Этот комментарий был сведен к минимуму модератором на сайте
Я использовал несколько файлов csv для нескольких xls, но ошибся в файлах xls de csv; отдельные данные, но становятся вместе в ячейках. Как это можно решить?
Этот комментарий был сведен к минимуму модератором на сайте
Код не может поддерживать CSV-файл с разделителями-запятыми.
Этот комментарий был сведен к минимуму модератором на сайте
КОГДА я дал имя папки, программа сказала: «Нет файлов, соответствующих вашему запросу». Но в папке 2,609 файлов .csv
Этот комментарий был сведен к минимуму модератором на сайте
Код не поддерживает CSV-файл с разделителями-запятыми, ваши файлы в этом случае?
Этот комментарий был сведен к минимуму модератором на сайте
Здравствуйте,

отличная статья - спасибо! Почти работает для меня.

Вот проблема: у меня есть CSV-файл с разделителями. Я изменил разделитель окон по умолчанию (через панель управления/региональные настройки) на «|». Итак, когда я открываю CSV-файл с помощью Excel, он открывается, напрямую считывает и анализирует поля в столбцах правильно. Все, что мне нужно сделать, это сохранить как xls или xlsx, готово. Когда я смотрю на ваш код, это должно быть то, что делает код: он открывает файлы csv в папке, сохраняет их как xls или xlsx и зацикливается на этом.

Вот проблема: когда я открываю эти файлы Excel, разделители каналов все еще существуют, ничего не анализируется в столбцах. Это было поведение, как и до моего изменения настройки по умолчанию с разделителями каналов в настройках Windows. Так что похоже, что Excel не использует эти настройки Windows. Я проверил это, заменив разделители каналов разделителями-запятыми в копии файла - из двух файлов файл с разделителями каналов остался непроанализированным, файлы с разделителями-запятыми были преобразованы просто отлично.

Любая идея, где можно найти или изменить это встроенное в Excel запятую, или есть ли способ сделать это в коде? Я бы предпочел НЕ выполнять поиск и замену, а затем сохранять...

Спасибо, HC
Этот комментарий был сведен к минимуму модератором на сайте
Если вы хотите разделить данные на столбцы на основе разделителя каналов в Excel, просто используйте функцию «Текст в столбцы», чтобы разделить данные на / после преобразования файлов csv в xls.
Этот комментарий был сведен к минимуму модератором на сайте
Не делает код полезным для файлов Excel.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, отличный скрипт, который сработал у меня после того, как я попробовал все другие скрипты, доступные в Google. Я добавил еще несколько строк, которые выполняют операцию преобразования текста в столбцы, которую я хочу. Может ли кто-нибудь помочь мне, как изменить сценарий, указав расположение папки на локальном диске вместо открытия диалогового окна, поскольку я фактически автоматизирую систему.
, заранее спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Hi
Не могли бы вы поделиться сценарием, который выполняет вывод текста в столбцы??
С наилучшими пожеланиями
Этот комментарий был сведен к минимуму модератором на сайте
Отличный сценарий после поиска всех других сценариев, доступных в Google. Может ли кто-нибудь помочь, как изменить этот сценарий, указав расположение папки на локальном диске вместо того, чтобы разрешить ему открывать диалоговое окно, поскольку я фактически автоматизирую систему. заранее спасибо
Этот комментарий был сведен к минимуму модератором на сайте
Крутой кусок кода. Очень полезный. Если я не ошибаюсь, код для .xlsx выглядит так же, как код .xls.

Эта строка:
ActiveWorkbook.SaveAs Replace(xSPath и xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Я предполагаю, что это должно быть: ".csv", ".xlsx", vbTextCompare и т. д.
Этот комментарий был сведен к минимуму модератором на сайте
Я изменил код так, как описано выше; теперь скрипт работает как положено: генерирует файлы xlsx
Этот комментарий был сведен к минимуму модератором на сайте
нет, нет. он по-прежнему говорит xls в обеих версиях.
Этот комментарий был сведен к минимуму модератором на сайте
этот макрос не показывает мой файл csv
Этот комментарий был сведен к минимуму модератором на сайте
Одна небольшая проблема с этим кодом заключается в том, что некоторая точность (количество десятичных знаков) может быть потеряна при открытии CSV и сохранении его как xlsx.
Способ предотвратить это - выбрать все ячейки сразу после открытия, установить количество знаков после запятой на желаемое количество (лично для меня 15) и *затем* сохранить как xlsx

В противном случае xlsx имеет меньшую детализацию (меньшую точность с точки зрения десятичных знаков), чем исходный csv, что может привести к проблемам в некоторых приложениях.
Этот комментарий был сведен к минимуму модератором на сайте
он меняет формат столбца даты с дд-мм-гггг на дд/мм/гггг, пожалуйста, кто-нибудь может помочь, как предотвратить изменение форматов столбцов этим скриптом.
Большое спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Привет, гадюка, после преобразования вы можете отформатировать их обратно, выбрать даты и щелкнуть правой кнопкой мыши, чтобы выбрать «Формат ячеек» из контекстного меню, в диалоговом окне «Формат ячейки» на вкладке «Число» нажмите «Пользовательский» в списке «Категория», затем введите mm-dd- yyyy в текстовое поле в правом разделе. Или, если у вас есть Kutools for Excel, примените Форматирование даты, чтобы изменить формат даты по мере необходимости.
Этот комментарий был сведен к минимуму модератором на сайте
отличная статья. Как я могу сохранить все преобразованные файлы в новом месте? Не могли бы вы обновить код и отправить его мне. Например, разрешить пользователю выбирать папку назначения.


Спасибо
Этот комментарий был сведен к минимуму модератором на сайте
У вас есть ошибка в строке 22 из csv в xlsx
С ошибкой — замена ActiveWorkbook.SaveAs (xSPath и xCSVFile, «.csv», «.xls», vbTextCompare), xlWorkbookDefault
Исправлено — замена ActiveWorkbook.SaveAs (xSPath и xCSVFile, «.csv», «.xslx», vbTextCompare), xlWorkbookDefault
Этот комментарий был сведен к минимуму модератором на сайте
Спасибо за напоминание, я обновил его, еще раз спасибо.
Этот комментарий был сведен к минимуму модератором на сайте
Я получаю сообщение об ошибке «Переменная объекта или переменная блока не установлена» для этой строки:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> это путь к конкретной папке на моем компьютере, где я выполняю преобразование (в папке есть куча файлов csv )

Я здесь что-то не так?
Этот комментарий был сведен к минимуму модератором на сайте
Это работает для меня, но расширение файла не меняется. Какие-нибудь советы?
Этот комментарий был сведен к минимуму модератором на сайте
То же самое для меня - все файлы остаются в формате .csv.
Этот комментарий был сведен к минимуму модератором на сайте
Все выбранные вами файлы csv были сохранены как новые файлы Excel, исходные файлы (csv) не изменяются, существуют новые файлы Excel с тем же содержимым.
Этот комментарий был сведен к минимуму модератором на сайте
У меня такая же проблема. Если ваш исходный файл имеет расширение заглавными буквами (.CSV), он не работает. Просто замените .csv на .CSV в коде в строке 22, и все должно заработать. Ну, по крайней мере, для меня это было так.
Этот комментарий был сведен к минимуму модератором на сайте
Как мне включить код в процедуру пакетного файла XLSX, чтобы точка с запятой разделяла данные на отдельные столбцы? Общий код преобразует файл из .csv в .xlsx, но не разделяет данные на отдельные столбцы.
Этот комментарий был сведен к минимуму модератором на сайте
да это не работа.
Этот комментарий был сведен к минимуму модератором на сайте
Буэнос диас компаньерос

Adiciona ло Que Hace эль-скрипт, quisiera poder convertir inmediatamente эль texto en columnas, por la opción Que no es delimitado ningún typeo de caracter, adicional los tamaños de las columnas son diferentes. Vale la pena aclarar que si tomo cada archivo por separado y le aplico la opción de texto en columnas, bajo esa opción los puedo convertir sin Problemas, abriéndolos uno por uno, pero si grabo esa macro y le aplico la misma macro to todos, включительно usando la opción de "USAR REFERENCIAS RELATIVAS", no hase el proceso bien, porque el graba las posiciones de la delimitación del archivo que uso de ejemplo, pero necesito que lo aplique nuevo a cada archivo, es decir, como si abriera cada archivo nuevo y le hiciera manualmente la opción de delimitación y no aplique los valores de ubicación de las columnas identificados en el archivo ejemplo.

Я. вставить ESA opcion en este archivo, грех эмбарго pasa lo que indico en la lineas arriba, solo requiero saber como puedo hacer para aplicar la convert a cada archivo, aplicando la delimitacion del campo como su fuera un archivo nuevo.


Workbooks.Open Имя файла: = xSPath & xCSVFile
ActiveWorkbook.SaveAs Replace(xSPath и xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault

ESTA PARTE ES LA QUE AGREGUE APLICANDO EL FORMATO DEL TEXTO A COLUMNAS

StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(18 _
, 1), Массив(38, 1)), TrailingMinusNumbers:=True
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1, 0).Range("A1").Выбрать
ActiveWorkbook.Save

HASTA AQUI AGREGUE YO

ActiveWorkbook.Close
Windows(xWsheet).Активировать
xCSVFile = Каталог

Петля
Application.StatusBar = Ложь
Application.DisplayAlerts = True
End Sub

No se si me hago explicar bien, pero es mi Problema.
Здесь еще нет комментариев
Оставляйте свои комментарии
Публикация как гость
×
Оценить этот пост:
0   Характеристики
Предлагаемые места

Подписывайтесь на Нас

Copyright © 2009 - www.extendoffice.ком. | Все права защищены. Питаться от ExtendOffice, | Карта сайта
Microsoft и логотип Office являются товарными знаками или зарегистрированными товарными знаками Microsoft Corporation в США и / или других странах.
Защищено Sectigo SSL