【问题标题】: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