Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Excel工作表另存为制表符分隔的文本文件的VBA代码_Excel_Vba - Fatal编程技术网

将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