如何使用VBA更改csv文件中列的顺序?

我有3个CSV文件,我必须合并,但在此之前,我必须准备,然后有相同的列顺序。 所有工作正常,除了我无法弄清楚如何改变输出文件列的顺序。 我可以select我想要的列和其他跳过罚款,但如果我想交换一些? 我认为按照正确的顺序在fieldinfo数组将会做的伎俩,但没有。 我想用6换掉8。

Application.ScreenUpdating = False Workbooks.OpenText Filename:=Filenamenew, Origin:=xlWindows, StartRow _ :=2, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, Comma:=True, _ Space:=False, Other:=False, FieldInfo:=Array(Array(1, 3), Array(2, 9), Array(3, 1), Array(4, 9), Array(5, 9), Array(8, 1), Array(7, 9), Array(6, 1)) Set Wb = ActiveWorkbook Application.DisplayAlerts = False Wb.SaveAs Filename:=LBname, FileFormat:=FileFormatNum, _ ReadOnlyRecommended:=False, _ CreateBackup:=False Application.DisplayAlerts = True Wb.Close savechanges:=False 

谢谢

这样做的最好方法是更改​​任何正在创build需要更改的CSV文件的输出。 我假设你无论如何都无法访问它,所以这将完成工作:

 Sub swapColumns(first As Integer, second As Integer) Dim wb As Workbook Dim ws As Worksheet Set wb = Workbooks.Open("C:\root\test.csv") Set ws = wb.Sheets(1) If first > second Then Dim i As Integer i = first first = second second = i ElseIf first = second Then Exit Sub End If ws.Columns(second).Cut ws.Columns(first).Insert Shift:=xlToRight ws.Columns(first + 1).Cut ws.Columns(second + 1).Insert Shift:=xlToRight End Sub 

您可以使用swapColumns 6, 8从现有代码调用此Sub