我已经编写了下面的vba代码来获取excel文件,并将其读/写到新的文本文件中。我这样做的主要问题是新文本文件中所需的间距不均匀。那么,我的意思是如果第一行有四列是[列a = 2列b = 3,列c = 4,列d = 5],文本文件中的输出将是:
2 3 4 5
2和3之间有一个标签,3和4之间有4个空格,4和5之间有14个空格。这是非常随机的,但格式化是由于先前的文件创建的。
我成功完成了这个问题的一个方面,但是,有两个新问题出现了。
在我的Excel文件的第三列中,并非所有数字都具有相同的长度。前 - 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
有人能够帮助解决这个问题吗?
答案 0 :(得分:1)
将if与you 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
您可以使用列宽和值的长度来调用它。它返回一个字符串,其中包含要在值和下一个值之间放置的空格数。 “垫”
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