2012-12-02 11 views
1

我有3 csv文件,我必須合併,但在此之前,我必須準備,然後有相同的列順序。所有工作正常,除了我無法弄清楚如何改變輸出文件中列的順序。我可以選擇我想要的列和其他跳過,但如果我想交換一些呢?我認爲按照正確的順序在fieldinfo數組中可以做到這一點,但不會。我想交換8 6.如何在使用VBA的csv文件中更改列的順序?

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 

感謝

回答

2

最好辦法做到這一點是要改變無論是創建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

+0

非常感謝調用此子,這就是我正在尋找。最好的祝福! –

+0

非常好 - 很高興我能幫到你!如果這回答了您的問題,您可以點擊此答案左側的複選標記。這樣做有助於你將來的工作,因爲有時候人們會在你爲自己找到答案之前檢查你接受答案的頻率 - 而且你還得到2點聲望點。 –