Sub ConvertFileToCSV(sPath As String)
Dim wbToConvert As Workbook
Workbooks.OpenText Filename:= _
sPath, Origin:=437, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlSingleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _
, Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1)), TrailingMinusNumbers:=True
Set wbToConvert = ActiveWorkbook
With wbToConvert
With .Sheets(1)
.Columns("B:B").EntireColumn.Delete
.Columns("C:C").EntireColumn.Delete
End With
.SaveAs Filename:=WorksheetFunction.Substitute(sPath, ".txt", ".csv"), FileFormat:=xlCSV, CreateBackup:=False
.Close savechanges:=False
End With
End Sub
这将让您将文件名传递给函数,打开工作簿,删除 B 和 C 列,然后将其保存为 csv。从那里我们只需要调用它,我们可以使用这样的例程来完成
Sub ConvertEach()
Dim fso As Object, _
ShellApp As Object, _
File As Object, _
SubFolder As Object, _
Directory As String, _
Problem As Boolean
'Turn off screen flashing
Application.ScreenUpdating = False
'Create objects to get a listing of all files in the directory
Set fso = CreateObject("Scripting.FileSystemObject")
'Prompt user to select a directory
Do
Problem = False
Set ShellApp = CreateObject("Shell.Application"). _
Browseforfolder(0, "Please choose a folder", 0, "c:\\")
On Error Resume Next
'Evaluate if directory is valid
Directory = ShellApp.self.Path
Set SubFolder = fso.GetFolder(Directory).Files
If Err.Number <> 0 Then
If MsgBox("You did not choose a valid directory!" & vbCrLf & _
"Would you like to try again?", vbYesNoCancel, _
"Directory Required") <> vbYes Then Exit Sub
Problem = True
End If
On Error GoTo 0
Loop Until Problem = False
'Look through each file
For Each File In SubFolder
If Not Excludes(Right(File.Path, 3)) = True Then
If Right(LCase(File.Path), 3) = "txt" Then
Call ConvertFileToCSV(LCase(File.Path))
End If
End If
Next
End Sub