2012-12-02 1 views
1

나는 병합해야하는 3 개의 csv 파일을 가지고 있지만 그 전에는 동일한 열 순서를 갖기 위해 준비해야합니다. 내가 출력 파일의 열 순서를 변경하는 방법을 지금까지 파악할 수 없다는 점을 제외하면 모두 정상적으로 작동합니다. 원하는 열을 선택하고 다른 열을 잘 건너 뛸 수 있지만 일부를 바꾸려면 어떻게해야합니까? 나는 fieldinfo 배열에 적절한 순서를 두는 것이 트릭을 할 것이라고 생각했지만 아니었다. 내가 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

덕분에 많은 기존의 코드에서이 하위를 호출 할 수 있습니다, 그게 무슨의 I 찾고 있었어. 친애하는! –

+0

우수 - 기꺼이 도와 드리겠습니다! 이 질문에 대한 답변이 있으면이 대답의 왼쪽에있는 체크 표시를 클릭하십시오. 이렇게하면 사람들이 당신을 위해 답변을하기 전에 답변을 수락하는 빈도를 확인하는 경우가 있기 때문에 나중에 도움이 될 것입니다. 또한 평판 포인트 2 점을 얻을 수 있습니다. –

관련 문제