Excel 从.csv写入txt文件,列之间的空格不同

Excel 从.csv写入txt文件,列之间的空格不同,excel,vba,csv,Excel,Vba,Csv,我已经编写了下面的vba代码来获取excel文件,并将其读/写到新的文本文件中。我这样做的主要问题是新文本文件中所需的间距不统一。我的意思是,如果有四列的行1是[列a=2列b=3,列c=4,列d=5],文本文件中的输出将是: 2 3 4 5 2和3之间有一个制表符,3和4之间有四个空格,4和5之间有14个空格。这是非常随机的,但格式是由于以前创建的文件 我成功地完成了这个问题的一个方面,但是,出现了两个新问题 在我的excel文件的第三列中,并非所有

我已经编写了下面的vba代码来获取excel文件,并将其读/写到新的文本文件中。我这样做的主要问题是新文本文件中所需的间距不统一。我的意思是,如果有四列的行1是[列a=2列b=3,列c=4,列d=5],文本文件中的输出将是:

2       3    4              5
2和3之间有一个制表符,3和4之间有四个空格,4和5之间有14个空格。这是非常随机的,但格式是由于以前创建的文件

我成功地完成了这个问题的一个方面,但是,出现了两个新问题

在我的excel文件的第三列中,并非所有数字的长度都相同。Ex-
单元格(3,3)。值=79.13
单元格(4,3)。值=81.6

我如何获得以下信息(即现在发生的情况):

谈到这一点:

"302277600       19940130    79.13              18.06"
"302277600       19940131    81.6               18.06" 
基本上,根据长度更改值之间的间距。 此外,有没有办法去掉引号

Sub excelToTxt()

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

LastCol = 4
LastRow = 19954

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

Open FilePath For Output As #2

For i = 1 To LastRow

    CellData = ""

    For j = 1 To LastCol
        If j = 1 Then
            CellData = CellData + Trim(ActiveCell(i, j).Value) & "       "
        ElseIf j = 2 Then
            CellData = CellData + Trim(ActiveCell(i, j).Value) & "    "
        ElseIf j = 3 Then
            CellData = CellData + Trim(ActiveCell(i, j).Value) & "              "
        ElseIf j = LastCol Then
            CellData = CellData & Trim(ActiveCell(i, j).Value)
        End If

Next j

Write #2, CellData

Next i

Close #2

End Sub

有人能帮助解决这个问题吗?

请将此与您的if语句结合起来

Public Function PadSpace(nMaxSpace As Integer, nNumSpace As Integer) As String
    If nMaxSpace < nNumSpace Then
        PadSpace = ""
    Else
        PadSpace = Space(nMaxSpace - nNumSpace)
    End If
End Function

我很感激你的回答。关于函数,是否直接写入sub本身(即,我是否复制/粘贴)?不,sub中不能有函数。将该函数复制到sub的上方或下方。我想我是在遵循这一点,但是,当我输入此项时,我只对最后(第四)列正确地执行了行操作。前三列合并在一起,没有任何间距。我调整了空格的数量。很抱歉它应该是列的总长度。我已经考虑过你放进去的空间数了。请参阅上面的编辑。很高兴为您提供帮助。每个人都有自己花时间学习的东西。把你的也传下去。
Public Function PadSpace(nMaxSpace As Integer, nNumSpace As Integer) As String
    If nMaxSpace < nNumSpace Then
        PadSpace = ""
    Else
        PadSpace = Space(nMaxSpace - nNumSpace)
    End If
End Function
    If j = 1 Then
        CellData = CellData + Trim(ActiveCell(i, j).Value) & PadSpace(16, Len(Trim(ActiveCell(i, j).Value)))
    ElseIf j = 2 Then
        CellData = CellData + Trim(ActiveCell(i, j).Value) & PadSpace(12, Len(Trim(ActiveCell(i, j).Value)))
    ElseIf j = 3 Then
        CellData = CellData + Trim(ActiveCell(i, j).Value) & PadSpace(19, Len(Trim(ActiveCell(i, j).Value)))
    ElseIf j = LastCol Then
        CellData = CellData & Trim(ActiveCell(i, j).Value)
    End If