2015-10-16 28 views
1

我有一個帶有4列的.csv文件。我想將我的excel數據放入一個txt文件,但是,我想要在它們在txt文件上的列之間有不同的間距選項。從.csv寫入到txt文件,但在列之間有不同的空間模式

實施例 - 如果與四列第1行是[列= 2列b = 3,列c = 4,和列d = 5],在文本文件中的輸出將是:

2  3 4    5 

2和3之間有一個選項卡,3和4之間有4個空格,4和5之間有14個空格。這是非常隨機的,但格式化是由於以前創建的文件。

我按照教程編寫了下面的代碼,但不知道如何操作它以獲得每行的不同間距。

Sub excelToTxt() 

Dim FilePath As String 
Dim CellData As String 
Dim LastCol As Long 
Dim LastRow As Long 

LastCol = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column 
LastRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row 

CellData = vbTab 

FilePath = Application.DefaultFilePath & "\test.txt" 

Open FilePath For Output As #2 
For i = 1 To LastRow 

For j = 1 To LastCol 

    If j = LastCol Then 
     CellData = CellData + Trim(ActiveCell(i, j).Value) 
    Else 
     CellData = Trim(ActiveCell(i, j).Value) + CellData 
    End If 

Next j 

Write #2, CellData 
CellData = vbTab 

Next i 

Close #2 


End 

有人能幫助解決這個問題嗎?

回答

1

你可以使用這樣的:如果你認爲你已經找到了一個重複的問題

Dim spacing As Variant 

Select Case Cells(i, j).Column 
    Case 1: spacing = vbTab 
    Case 2: spacing = Space(4) - Len(Cells(i, j).Value) 
    Case 3: spacing = Space(14) - Len(Cells(i, j).Value) 
End Select 

Write #2, Cells(i, j).Value & spacing 
1

您將不得不修改您正在編寫值的部分。檢查您正在寫出的列,並在列之間添加所需的值。

就是這樣。

For j = 1 To LastCol 

     If j = LastCol Then 
      CellData = CellData + Trim(ActiveCell(i, j).Value) 
     Elseif j = 1 Then 
      CellData = Trim(ActiveCell(i, j).Value) + CellData 
     Elseif j = 2 Then 
      CellData = Trim(ActiveCell(i, j).Value) + vbTab 
     Elseif j = 3 Then 
      CellData = Trim(ActiveCell(i, j).Value) + " " 
     Elseif j = 4 Then 
      CellData = Trim(ActiveCell(i, j).Value) + "   " 
     Elseif j = 5 Then 
      CellData = Trim(ActiveCell(i, j).Value) + " " 
     End If 

    Next j 

    Write #2, CellData 
    CellData = vbTab 
+0

請標誌是這樣,而不是發佈重複的答案。如果它不是重複的,那麼**根據問題的具體情況定製你的答案,** – ChrisF