1

マージする必要がある 3 つの csv ファイルがありますが、その前に、列の順序を同じにするために準備する必要があります。出力ファイルの列の順序がどのように変更されるかをこれまでのところ理解できないことを除いて、すべて正常に機能します。必要な列を選択し、他のスキップは問題なく実行できますが、一部を交換したい場合はどうすればよいですか? fieldinfo 配列に適切な順序を入れるとうまくいくと思いましたが、そうではありませんでした。8と6を交換したいです。

    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

ありがとう

4

1 に答える 1

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

このSubは、既存のコードから次のように呼び出すことができます。swapColumns 6, 8

于 2012-12-03T00:14:46.737 に答える