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

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

2 3 4 5 

在2和3之间有一个选项卡,在3和4之间有4个空格,在4和5之间有14个空格。这是非常随意的,但格式化是由于以前创build的文件。

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

在我的excel文件的第三列中,并不是所有的数字都是相同的长度。 Ex – Cells(3, 3).Value = 79.13Cells(4, 3).Value = 81.6 Cells(3, 3).Value = 79.13 Cells(4, 3).Value = 81.6

我如何得到以下(这是现在发生的事情):

 "302277600 19940130 79.13 18.06" "302277600 19940131 81.6 18.06" 

转向这个:

 "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 

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

把这个和你结合起来

 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 

你可以用列的宽度和值的长度来调用它。 它将返回一个string,其值与下一个值之间要放置的空格数。 “Pad”

  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