【问题标题】:Visual Basic code that loops through folder and convert .csv files to .txt files循环遍历文件夹并将 .csv 文件转换为 .txt 文件的 Visual Basic 代码
【发布时间】:2018-09-01 17:32:34
【问题描述】:

你好,正如标题所说,我需要一个循环遍历文件夹并搜索 ,csv 然后将 CSV 文件转换为文本文件的 Visual Basic 代码,我找到了这段代码,但它仅适用于一个文件:

Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile : Set objFile = objFSO.OpenTextFile("c:\yourfolder\conv.csv")
Dim objOut : Set objOut = objFSO.CreateTextFile("C:\yourfolder\new_conv.csv")

arrData = objFile.ReadAll
objOut.Write Replace(arrData,",",vbTab)
objFile.Close
objOut.Close

【问题讨论】:

标签: vba loops csv text type-conversion


【解决方案1】:

这是一个粗略的想法,将其转换为使用额外的 sub 与您的代码相关。很确定有更好的方法,但这是为了类似于您的代码而编写的。例如,一种改进是实现为具有转换方法的类,而不是传递引用。

您可能还想实施一个清理例程来删除 csvs?

Option Explicit
Public Sub test()
    Dim objFSO As Object, objFile As Object, folder As Object

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set folder = objFSO.GetFolder("C:\Users\User\Desktop\TestFolder")

    For Each objFile In folder.Files
        If objFSO.GetExtensionName(objFile) = "csv" Then
            CreateTextFile objFile, objFSO
        End If
    Next
End Sub

Public Sub CreateTextFile(ByVal objFile As Object, ByVal objFSO As Object)
    Dim objOut As Object, arrData As String, path As String
    path = objFile.path
    Set objFile = objFSO.OpenTextFile(objFile)
    Set objOut = objFSO.CreateTextFile(Left$(path, InStr(path, ".csv") - 1) & ".txt")

    arrData = objFile.ReadAll
    objOut.Write Replace(arrData, ",", vbTab)
    objFile.Close
    objOut.Close
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 2014-11-12
    • 2014-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 2012-04-25
    相关资源
    最近更新 更多