将CSV文件导入Excel

时间:2014-08-22 08:05:02

标签: excel excel-vba export-to-excel vba

我尝试编写一个宏,当单击一个按钮时,该宏会自动将CSV文件导入Excel工作簿。我已经完成了大部分工作,但要弄清楚导入本身(我对VBA没有过多的经验)我录制了一个宏并手动完成。

我得到的结果就是这个 -

With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;\\folder\shared$\folder\folder\TODAYS DATA\Matt\12345.csv”, _
Destination:=Range("$A$2:$E$2"))

但我想要做的就是更改它,以便它只查找任何CSV文件。我该怎么做?

我尝试将其更改为只查找*.csv,但这会因为查找文字"*.csv"文件而失败。

希望你能帮忙!

1 个答案:

答案 0 :(得分:0)

您可以通过多种方法来执行此操作,如下所示应该可以:

Sub OpenLatest()
    Dim rs As ADODB.Recordset, fs As FileSystemObject, Folder As Scripting.Folder, File As File

    'create a recordset to store file info
    Set rs = New ADODB.Recordset
    rs.Fields.Append "FileName", adVarChar, 100
    rs.Fields.Append "Modified", adDate
    rs.Open

    'build the list of files and sort
    Set fs = New FileSystemObject
    Set Folder = fs.GetFolder("\\folder\shared$\folder\folder\TODAYS DATA\Matt")

    For Each File In Folder.Files
        rs.AddNew
        rs("FileName") = File.Path
        rs("Modified") = File.DateLastModified
    Next

    rs.Sort = "Modified DESC"

    'process the first newest file
    rs.MoveFirst
    Do Until Right(rs.Fields("FileName").Value, 3) = "CSV"
        rs.MoveNext
    Loop
    ActiveSheet.QueryTables.Add Connection:="TEXT;" & rs.Fields("FileName").Value, Destination:=Range("$A$2:$E$2")
End Sub

它将获取该文件夹中的所有文件,并使用带有后缀csv的最新文件。