Excel 从.csv写入txt文件,列之间的空格不同
我已经编写了下面的vba代码来获取excel文件,并将其读/写到新的文本文件中。我这样做的主要问题是新文本文件中所需的间距不统一。我的意思是,如果有四列的行1是[列a=2列b=3,列c=4,列d=5],文本文件中的输出将是: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文件的第三列中,并非所有
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