быстрый способ пакетного преобразования нескольких файлов CSV в файлы Excel - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть папка с файлами типа .csv, которую мне нужно изменить на файл типа .xlsx.Это код, который я имею ниже, и я не могу преобразовать файлы в своей папке в .xlsx. Я запустил код и не получаю сообщение об ошибке, код просто не конвертирует какие-либо файлы CSV в xlsx.файлы.файлы в моей папке являются заглавными CSV-файлами, а не строчными CSV-файлами, если это имеет значение.Любая помощь с благодарностью!

Sub ConvertCSVToXlsx()

    Dim myfile As String
    Dim oldfname As String, newfname As String
    Dim workfile
    Dim folderName As String

    Application.DisplayAlerts = False
    Application.ScreenUpdating = False

'   Capture name of current file
    myfile = ActiveWorkbook.Name

'   Set folder name to work through
    folderName = "C:\Users\m\Desktop\CSVtoEXCEL\"

'   Loop through all CSV filres in folder
    workfile = Dir(folderName & "*.CSV")
    Do While workfile <> ""
'       Open CSV file
        Workbooks.Open Filename:=folderName & workfile
'       Capture name of old CSV file
        oldfname = ActiveWorkbook.FullName
'       Convert to XLSX
        newfname = folderName & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"
        ActiveWorkbook.SaveAs Filename:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
        ActiveWorkbook.Close
'       Delete old CSV file
        Kill oldfname
        Windows(myfile).Activate
        workfile = Dir()
    Loop

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

End Sub

1 Ответ

0 голосов
/ 03 октября 2018

Это будет делать то, что вы хотите!

Sub CSVtoXLSB2()
Dim wb As Workbook
Dim CSVPath As String
Dim sProcessFile As String

CSVPath = "C:\your_path_here\"
sProcessFile = Dir(CSVPath & "*.csv")
Do Until sProcessFile = ""   ' Loop until no file found.
    Set wb = Application.Workbooks.Open(CSVPath & sProcessFile)
    wb.SaveAs CSVPath & Split(wb.Name, ".")(0) & ".xlsb", FileFormat _
        :=50, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    wb.Close
    sProcessFile = Dir()   ' Get next entry.
Loop
Set wb = Nothing
End Sub
...