是否可以批量转换CSV使用宏XLS?(Is it possible to batch convert

2019-07-29 15:12发布

我有大量的csv ,我需要在文件中.xls格式。 是否有可能运行一个宏或与另一种语言最好做一个批量转换?

我已经使用这个代码http://www.ozgrid.com/forum/showthread.php?t=71409&p=369573#post369573引用我的目录,但我不知道该命令打开每个文件并保存它们。 下面是我有:

Sub batchconvertcsvxls()
    Dim wb As Workbook
    Dim CSVCount As Integer
    Dim myVar As String

    myVar = FileList("C:\Documents and Settings\alistairw\My Documents\csvxlstest")
    For i = LBound(myVar) To UBound(myVar)

        With wb

            Application.Workbooks.OpenText 'How do I reference the myvar string ?
            wb.SaveAs '....

        End With

    Next
End Sub

Function FileList(fldr As String, Optional fltr As String = "*.*") As Variant
    Dim sTemp As String, sHldr As String
    If Right$(fldr, 1) <> "\" Then fldr = fldr & "\"
    sTemp = Dir(fldr & fltr)
    If sTemp = "" Then
        FileList = Split("No files found", "|") 'ensures an array is returned
        Exit Function
    End If
    Do
        sHldr = Dir
        If sHldr = "" Then Exit Do
        sTemp = sTemp & "|" & sHldr
    Loop
    FileList = Split(sTemp, "|")
End Function

编辑:这些文件格式化为CSV .txt文件

Answer 1:

在代码少了很多线,这应该得到你想要的东西。 不过,我会说这可能不是把它做的最快的方法,因为你打开,保存,每次关闭工作簿。 我将寻找一个更快的方式,但我忘了我的头顶部的方法。

Sub batchconvertcsvxls()

Dim wb As Workbook
Dim strFile As String, strDir As String

strDir = "C:\"
strFile = Dir(strDir & "*.csv")

Do While strFile <> ""

    Set wb = Workbooks.Open(strDir & strFile)
    With wb
        .SaveAs Replace(wb.FullName, ".csv", ".xls"), 50 'UPDATE:
        .Close True
    End With
    Set wb = Nothing
Loop

End Sub

**更新**,你需要一个.xls文件正确FILEFORMAT枚举。 我认为它的50,但你可以在这里查看Excel文件类型枚举 ,如果它不是。



Answer 2:

通过组合由斯科特·霍尔茨曼和“ExcelFreak”给出的代码,转换工作得很好。 最终的代码看起来是这样的:

Sub CSV_to_XLS()

Dim wb As Workbook
Dim strFile As String, strDir As String

strDir = "U:\path\"
strFile = Dir(strDir & "*.csv")

Do While strFile <> ""

    Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True)
    wb.SaveAs Replace(wb.FullName, ".csv", ".xls"), 50 'UPDATE:
    wb.Close True

    Set wb = Nothing
    strFile = Dir
Loop

End Sub

打开转换.xls文件抛出一个警告每次:

“你试图打开‘文件名’的文件,是不是由文件扩展名指定的格式不同。验证该文件没有损坏,是来自可信来源打开文件之前,你要打开的文件现在?”

单击是然后打开.xls文件。

有没有摆脱这个警告信息的一种方式? Excel中抛出一个警告每次.xls文件被打开。



Answer 3:

斯科特·霍尔茨曼的代码几乎为我做。 我不得不做出两处修改,以得到它的工作:

  1. 他忘了补充,使我们的循环继续下一个文件就行了。 在循环之前的最后一行应读

    strFile = Dir

  2. 像预期的那样Workbooks.Open方法没有读我的CSV文件(整条生产线最终将在第一个单元格文本)。 当我加入了参数Local:=True它的工作:

    Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True)



Answer 4:

这工作正常,至少在2013年的Excel使用的FileFormat:= xlExcel8参数,而不是文件类型标签50创建一个没有安全耿耿于怀打开的文件。

子CSV_to_XLS()

昏暗的WB作为工作簿昏暗strFile作为字符串,strDir作为字符串

strDir = “C:\ TEMP \” strFile =你(strDir及的 “* .csv”)

做虽然strFile <> “”

Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True)
wb.SaveAs Replace(wb.FullName, ".csv", ".xls"), FileFormat:=xlExcel8
wb.Close True

Set wb = Nothing
strFile = Dir

结束小组



Answer 5:

这是一个很好的问题,我在网上几个答案找到。 只是让非常小的变化(我不能修改任何已经发布的代码)我使事情更好一点:

Sub CSV_to_XLSX()

Dim wb As Workbook
Dim strFile As String, strDir As String

strDir = "C:\Users\acer\OneDrive\Doctorado\Study 1\data\Retest Bkp\Day 1\Sart\"
strFile = Dir(strDir & "*.csv")

Do While strFile <> ""

    Set wb = Workbooks.Open(Filename:=strDir & strFile, Local:=True)
    With wb
        .SaveAs Replace(wb.FullName, ".csv", ".xlsx"), 51
        .Close True
    End With
    Set wb = Nothing
    strFile = Dir
Loop

End Sub


文章来源: Is it possible to batch convert csv to xls using a macro?