2016-09-16 224 views
0

我需要將一系列數據從Excel或LibreOffice Calc文件導出爲ASCII純文本表格 - 文本文件。輸出的格式如下:將excel中的一系列數據導出爲ascii純文本格式的表csv或txt文件使用vba

+--------+--------------+--------+ 
| 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 | 
+--------+--------------+--------+ 
+1

目前還不清楚您的意思是否應該完全像您展示的那樣,包括邊框在內?你有什麼嘗試 - 什麼? –

+0

@TimWilliams,是的,我需要完全如上所示。但是如果每行之後的水平線是不可能的,那麼它是可以的,但至少標題應該在它下面有一行。 – adam1969in

+1

是的,這可以做...看到這個答案http://stackoverflow.com/questions/11503174/how-to-create-and-write-to-a-txt-file-using-vba – Rosetta

回答

0

嗯,我懂了工作。

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 

現在,我必須專注於讓數字對齊。 謝謝大家的建議。

相關問題