1

4 列の .csv ファイルがあります。Excel データを txt ファイルに配置したいのですが、txt ファイルにある列と列の間に異なる間隔オプションを設定したいと考えています。

例 - 4 列の行 1 が [列 a = 2、列 b = 3、列 c = 4、および列 d = 5] である場合、テキスト ファイルの出力は次のようになります。

2       3    4              5

2 と 3 の間にタブ、3 と 4 の間に 4 つのスペース、4 と 5 の間に 14 のスペースがあります。これはかなりランダムですが、フォーマットは以前に作成されたファイルによるものです。

チュートリアルごとに次のコードを書きましたが、それを操作して行ごとに異なる間隔を取得する方法がわかりません。

Sub excelToTxt()

Dim FilePath As String
Dim CellData As String
Dim LastCol As Long
Dim LastRow As Long

LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

CellData = vbTab

FilePath = Application.DefaultFilePath & "\test.txt"

Open FilePath For Output As #2
For i = 1 To LastRow

For j = 1 To LastCol

    If j = LastCol Then
        CellData = CellData + Trim(ActiveCell(i, j).Value)
    Else
        CellData = Trim(ActiveCell(i, j).Value) + CellData
    End If

Next j

Write #2, CellData
CellData = vbTab

Next i

Close #2


End 

誰でもこの問題を解決できますか?

4

2 に答える 2

1

値を書き出すセクションを変更する必要があります。書き出す列を確認し、列の間に必要な値を追加します。

このようなもの。

    For j = 1 To LastCol

        If j = LastCol Then
            CellData = CellData + Trim(ActiveCell(i, j).Value)
        Elseif j = 1 Then
            CellData = Trim(ActiveCell(i, j).Value) + CellData
        Elseif j = 2 Then
            CellData = Trim(ActiveCell(i, j).Value) + vbTab
        Elseif j = 3 Then
            CellData = Trim(ActiveCell(i, j).Value) + "    "
        Elseif j = 4 Then
            CellData = Trim(ActiveCell(i, j).Value) + "         "
        Elseif j = 5 Then
            CellData = Trim(ActiveCell(i, j).Value) + "  "
        End If

    Next j

    Write #2, CellData
    CellData = vbTab
于 2015-10-16T14:23:56.680 に答える