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 для додатків вікно та натисніть Insert > Модулі. Дивіться знімок екрана:
doc пакетного перетворення 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, які потрібно конвертувати. Дивіться знімок екрана:
doc пакетного перетворення cvs xls 2

4. клацання OK, усі файли CSV у вибраній папці перетворено у файли XLS у ній.
doc пакетного перетворення 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 для Excel збільшує Excel за допомогою Експортувати діапазон у файл утиліта для користувачів Excel, які хочуть швидко обробити такі операції:  Клацніть для 30-денна повнофункціональна безкоштовна пробна версія!
doc експортувати діапазон комірок у файл
 
Kutools для Excel: з більш ніж 300 зручними надбудовами Excel, які можна безкоштовно спробувати без обмежень у 30 днів.

Відносні статті:


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

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

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Коментарі (38)
Поки немає оцінок. Оцініть першим!
Цей коментар був мінімізований модератором на сайті
Я хочу зробити навпаки - конвертувати XLS в CSV. чи працює цей скрипт?
Під CSVtoXLS()
'ОновленняExtendoffice20170814
Dim xFd як FileDialog
Dim xSPath як рядок
Dim xXLSFile як рядок
Dim xWsheet як рядок
Application.DisplayAlerts = False
Application.StatusBar = Правда
xWsheet = ActiveWorkbook.Name
Встановіть 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
Робочі книги. Відкрийте ім’я файлу:=xSPath & xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Закрити
Windows(xWsheet).Активувати
xXLSFFile = Dir
Петля
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub
Цей коментар був мінімізований модератором на сайті
Підперетворити CSVToXlsx()



Приглушити myfile як рядок

Dim oldfname як рядок, newfname як рядок

Темний робочий файл

Dim folderName як рядок



Application.DisplayAlerts = False

Application.ScreenUpdating = Невірний



' Зніміть назву поточного файлу

myfile = ActiveWorkbook.Name



' Встановіть назву папки для роботи

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



' Перегляньте всі файли CSV в папці

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

Робити Поки робочий файл <> ""

' Відкрийте файл CSV

Робочі книги. Відкрийте ім’я файлу:=ім’я папки та робочий файл

' Зніміть назву старого файлу CSV

oldfname = ActiveWorkbook.FullName

' Перетворити в XLSX

newfname = ім'я папки і ліворуч(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

ActiveWorkbook.SaveAs Ім'я файлу:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True

ActiveWorkbook.Закрити

' Видалити старий файл CSV

Вбийте старе ім’я

Windows(myfile).Активувати

робочий файл = Dir()

Петля



Application.DisplayAlerts = True

Application.ScreenUpdating = True



End Sub
Цей коментар був мінімізований модератором на сайті
«Порада: якщо ви хочете конвертувати файли CSV у файли XLXS, вам просто потрібно змінити .xls на .xlsx у макросі ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, «.csv», «.xls», vbTextCompare)».

Я спробував це, і Excel не зміг відкрити отримані файли. Я отримав таке повідомлення: "Excel не може відкрити файл 'filename.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, що може призвести до проблем у деяких програмах
Цей коментар був мінімізований модератором на сайті
він змінює мій формат стовпця дати з дд-мм-рррр на дд/мм/рррр, будь ласка, чи може хтось допомогти, як запобігти зміні форматів стовпців цим сценарієм.
Спасибі велике.
Цей коментар був мінімізований модератором на сайті
Привіт, viper, після перетворення ви можете відформатувати їх назад, вибрати дати та клацнути правою кнопкою миші, щоб вибрати Формат осередків у контекстному меню, у діалоговому вікні Формат клітинки на вкладці Число клацніть Custom у списку категорій, потім введіть mm-dd- yyyy у текстове поле в правому розділі. Або якщо у вас є Kutools для Excel, застосувавши форматування дати, щоб змінити формат дати, як вам потрібно.
Цей коментар був мінімізований модератором на сайті
чудова стаття. Як я можу зберегти всі перетворені файли в новому місці? Чи можете ви оновити код і надіслати його мені. Так само, як дозволити користувачеві вибрати папку призначення.


Дякую
Цей коментар був мінімізований модератором на сайті
У вас є помилка в рядку 22 файлу csv до xlsx
З помилкою - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Виправлено – ActiveWorkbook.SaveAs Replace(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 a lo que hace el script, quisiera poder convertir inmediatamente el texto en columnas, por la opción que no es delimitado por ningún tipo 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 a la misdo, macro in usando la opción de "USAR REFERENCIAS RELATIVAS", no hace el processo 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 decirera, cocaevo 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.

Ya inserte esa opcion en este archivo, sin embargo pasa lo que indico en la lineas arriba, solo requiero sabre como puedo hacer para aplicar la conversion 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:=Масив(Масив(0, 1), Масив(18 _
, 1), Масив(38, 1)), TrailingMinusNumbers:=Істина
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1, 0).Range("A1").Вибрати
ActiveWorkbook.Save

HASTA AQUI AGREGUE YO

ActiveWorkbook.Закрити
Windows(xWsheet).Активувати
xCSVFile = Dir

Петля
Application.StatusBar = False
Application.DisplayAlerts = True
End Sub

No se si me hago explicar bien, pero es mi problem.
There are no comments posted here yet
Load More
Залишайте свої коментарі
Публікація як гість
×
Оцініть цю публікацію:
0   Персонажі
Рекомендовані місця

Слідуй за нами

Copyright © 2009 - WWW.extendoffice.com. | Всі права захищені. На основі ExtendOffice. | Карта сайту
Microsoft та логотип Office є товарними знаками або зареєстрованими товарними знаками Microsoft Corporation у США та / або інших країнах.
Захищений Sectigo SSL