VBA代码将Excel工作表保存为制表符分隔的文本文件

问题描述 投票:0回答:2

我找到了这段代码并试了一下。它工作正常,但在保存的文本文件中,第一列有空格(对于所有行)。我无法修复此代码。请帮忙。

Sub ExportRange()
Dim ExpRng As Range
Open ThisWorkbook.Path & "\AllDXL.txt" For Output As #1
Set ExpRng = Worksheets("Sheet1").Range("A1").CurrentRegion
FirstCol = ExpRng.Columns(1).Column
LastCol = FirstCol + ExpRng.Columns.Count - 1
FirstRow = ExpRng.Rows(1).Row
LastRow = FirstRow + ExpRng.Rows.Count - 1
For r = FirstRow To LastRow
 Data = ""
 For c = FirstCol To LastCol
  '  data = ExpRng.Cells(r, c).Value
  Data = Data & vbTab & ExpRng.Cells(r, c).Value
Next c
Print #1, Data
Next r
Close #1
End Sub
excel-vba vba excel
2个回答
1
投票

您为每个单元格添加vbTab前缀,包括第一个单元格。更改以下内容:

Data = Data & vbTab & ExpRng.Cells(r, c).Value

If c = FirstCol Then
    Data = Data & ExpRng.Cells(r, c).Value
Else
    Data = Data & vbTab & ExpRng.Cells(r, c).Value
End If

或者,如果每条线上总会有一些数据,你可以在vbTab阶段从每一行剥离第一个Print

更改

Print #1, Data

Print #1, Mid(Data, 2, Len(Data)-1)

1
投票

这也有效......

Sub ExportRange()
Dim ExpRng As Range
Dim myTab As String
Open ThisWorkbook.Path & "\AllDXL.txt" For Output As #1
    Set ExpRng = Worksheets("Sheet1").Range("A1").CurrentRegion
    FirstCol = ExpRng.Columns(1).Column
    LastCol = FirstCol + ExpRng.Columns.Count - 1
    FirstRow = ExpRng.Rows(1).Row
    LastRow = FirstRow + ExpRng.Rows.Count - 1
    For r = FirstRow To LastRow
       Data = ""
       For c = FirstCol To LastCol
           If c = 1 Then myTab = "" Else myTab = vbTab
        '  data = ExpRng.Cells(r, c).Value
           Data = Data & myTab & ExpRng.Cells(r, c).Value
       Next c
       Print #1, Data
   Next r
Close #1
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.