[英]Export a range of data in excel to ascii plain text formatted table csv or txt file using vba
我只需要将一系列数据从Excel或LibreOffice Calc文件导出到ascii纯文本表-文本文件。 输出应采用以下格式:
+--------+--------------+--------+
| Name | Place | Phone |
+========+==============+========+
| JOHN | TEXAS | 123456 |
+--------+--------------+--------+
| ROBERT | INDIANAPOLIS | 234567 |
+--------+--------------+--------+
| JEANNE | CAMBODIA | 345678 |
+--------+--------------+--------+
| ANN | CANADA | 456789 |
+--------+--------------+--------+
| RICK | HAGUE | 567890 |
+--------+--------------+--------+
是否可以使用vba? 是的,数字应右对齐。
或者像这样:
+--------+--------------+--------+
| Name | Place | Phone |
+========+==============+========+
| JOHN | TEXAS | 123456 |
| ROBERT | INDIANAPOLIS | 234567 |
| JEANNE | CAMBODIA | 345678 |
| ANN | CANADA | 456789 |
| RICK | HAGUE | 567890 |
+--------+--------------+--------+
如果我没记错的话,纯文本文件根本不会为一列辩护。
也就是说,尝试一下: http : //www.excel-easy.com/vba/examples/write-data-to-text-file.html
好吧,我知道了。
Sub Convert2Text()
Dim i As Integer, k As Integer, n As Integer, m As Integer
Dim Rng As Range, Dpath As String
Dim FSO As Scripting.FileSystemObject
Dim TxtFile As TextStream
Dim MaxLen As Integer
Set Rng = Application.InputBox("Please Select range.", "-Convert to Text-", , -Range("R2").Left, Range("R2").Top, , , 8)
If Rng Is Nothing Then
Exit Sub
End If
Dpath = Environ("USERPROFILE") & "\Documents\"
Set FSO = New FileSystemObject
Set TxtFile = FSO.CreateTextFile(Dpath & "Outputfile.txt", True)
MaxLen = 1
For i = 1 To Rng.Columns.Count
For k = 1 To Rng.Rows.Count
If MaxLen < Len(Rng.Cells(i, k)) Then
MaxLen = Len(Rng.Cells(i, k))
End If
Next k
Next i
MaxLen = MaxLen + 4
For i = 1 To Rng.Columns.Count
TxtFile.Write "+"
For m = 1 To MaxLen
TxtFile.Write "="
Next m
Next i
TxtFile.Write "+"
TxtFile.WriteLine
For n = 1 To Rng.Rows.Count
For i = 1 To Rng.Columns.Count
TxtFile.Write "|"
TxtFile.Write " "
TxtFile.Write " "
TxtFile.Write Rng.Cells(n, i)
For k = 1 To MaxLen - (Len(Rng.Cells(n, i))) - 2
TxtFile.Write " "
Next k
Next i
TxtFile.Write "|"
TxtFile.WriteLine
For i = 1 To Rng.Columns.Count
TxtFile.Write "+"
For m = 1 To MaxLen
TxtFile.Write "-"
Next m
Next i
TxtFile.Write "+"
TxtFile.WriteLine
Next n
MsgBox "Done!"
Shell "explorer.exe " & Dpath, vbNormalFocus
End Sub
现在,我必须集中精力使数字正确对齐。 谢谢大家的建议。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.