将Excel工作表另存为制表符分隔的文本文件的VBA代码
我找到了这个代码并尝试了它。它工作正常,但在保存的文本文件中,第一列有空格(适用于所有行)。我无法修复此代码将Excel工作表另存为制表符分隔的文本文件的VBA代码,excel,vba,Excel,Vba,我找到了这个代码并尝试了它。它工作正常,但在保存的文本文件中,第一列有空格(适用于所有行)。我无法修复此代码 Sub ExportRange() Dim ExpRng As Range Open ThisWorkbook.Path & "\AllDXL.txt" For Output As #1 Set ExpRng = Worksheets("Sheet1").Range("A1").CurrentRegion FirstCo
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
您为每个单元格(包括第一个单元格)添加了一个
vbTab
。更改以下内容:
Data = Data & vbTab & ExpRng.Cells(r, c).Value
到
或者,如果每行上总是有一些数据,您可以在打印
阶段从每行剥离第一个vbTab
:
改变
Print #1, Data
到
您为每个单元格(包括第一个单元格)添加了一个
vbTab
。更改以下内容:
Data = Data & vbTab & ExpRng.Cells(r, c).Value
到
或者,如果每行上总是有一些数据,您可以在打印
阶段从每行剥离第一个vbTab
:
改变
Print #1, Data
到
这也行
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
这也行
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
希望这可以节省一些时间:
Sub exporttoText()
将fileStream设置为对象
设置fileStream=CreateObject(“ADODB.Stream”)
fileStream.Charset=“utf-8”
文件流。打开
Dim Range可导出为范围
设置rangeToExport=工作表(“BPC处理”).Range(“A1”).CurrentRegion
将firstCol、lastCol、firstRow、lastRow设置为整数
firstCol=rangeToExport.Columns(1.Column)
lastCol=firstCol+rangeToExport.Columns.Count-1
firstRow=rangeToExport.Rows(1.row)
lastRow=firstRow+rangeToExport.Rows.Count-1
Dim r,c为整数
Dim str,分隔符为字符串
对于r=第一行到最后一行
str=“”
对于c=firstCol到lastCol
如果c=1,则
分隔符=“”
其他的
分隔符=vbTab'选项卡
如果结束
str=str&delimiter&rangeToExport.Cells(r,c).Value
下一个c
fileStream.WriteText str&vbCrLf'vbCrLf:linebreak
下一个r
将文件路径设置为字符串
filePath=Application.ThisWorkbook.Path&“\BPC Processed.txt”
fileStream.SaveToFile文件路径,2'2:创建或更新
文件流。关闭
端接头
希望这可以节省一些时间:
Sub exporttoText()
将fileStream设置为对象
设置fileStream=CreateObject(“ADODB.Stream”)
fileStream.Charset=“utf-8”
文件流。打开
Dim Range可导出为范围
设置rangeToExport=工作表(“BPC处理”).Range(“A1”).CurrentRegion
将firstCol、lastCol、firstRow、lastRow设置为整数
firstCol=rangeToExport.Columns(1.Column)
lastCol=firstCol+rangeToExport.Columns.Count-1
firstRow=rangeToExport.Rows(1.row)
lastRow=firstRow+rangeToExport.Rows.Count-1
Dim r,c为整数
Dim str,分隔符为字符串
对于r=第一行到最后一行
str=“”
对于c=firstCol到lastCol
如果c=1,则
分隔符=“”
其他的
分隔符=vbTab'选项卡
如果结束
str=str&delimiter&rangeToExport.Cells(r,c).Value
下一个c
fileStream.WriteText str&vbCrLf'vbCrLf:linebreak
下一个r
将文件路径设置为字符串
filePath=Application.ThisWorkbook.Path&“\BPC Processed.txt”
fileStream.SaveToFile文件路径,2'2:创建或更新
文件流。关闭
端接头
感谢CLR,打印#1,Mid(数据,2,Len(数据)-1)导致省略第一列数据中的第一个字符。我把它改成打印#1,Mid(数据,1,Len(数据)-1)它工作了。谢谢你没有用我的两个答案,是吗?你只需要一个或另一个。如果使用第一个(使用If-ELSE-THEN
结构),则不需要打印
更改。如果您同时使用这两个选项,但将打印部分更改为打印1,Mid(数据,1,Len(数据)-1),您将丢失每行的最后一个字符。很好,感谢CLR,打印1,Mid(数据,2,Len(数据)-1)导致忽略第一列数据中的第一个字符。我把它改成打印#1,Mid(数据,1,Len(数据)-1)它工作了。谢谢你没有用我的两个答案,是吗?你只需要一个或另一个。如果使用第一个(使用If-ELSE-THEN
结构),则不需要打印
更改。如果您同时使用这两个选项,但将打印部分更改为打印#1,Mid(数据,1,Len(数据)-1)
则会丢失每行的最后一个字符。很好,谢谢CLR