将列从特定列转换为文本文件时遇到问题。我找到了一个使用单元格选择的代码,它可以工作,但是我试图使用某个工作簿中某个工作表中的单元格范围而不是选择单元格来实现此目的。反正我能做到吗?
我尝试使用范围选择,但是它不起作用。它给了我对象错误。我想我必须定义活动工作簿和工作表的名称,但是我不确定该怎么做。
Dim r As Range, c As Range
Dim sTemp As String
Open ThisWorkbook.Path & "\2019.txt" For Output As #1
Range2 = Range("A2", Cells(Rows.Count, "A").End(xlUp)).Copy
For Each r In Range2
sTemp = ""
For Each c In r.Cells
sTemp = sTemp & c.Text & Chr(9)
Next c
'Get rid of trailing tabs
While Right(sTemp, 1) = Chr(9)
sTemp = Left(sTemp, Len(sTemp) - 1)
Wend
Print #1, sTemp
Next r
Close #1
End Sub
我的预期结果是转换为txt文件时没有引号,并且可以正常工作。我无法从某些工作表和某些列中提取内容。
答案 0 :(得分:0)
在变量的用法附近声明变量,以便您跟踪它们。使用“ Option Explicit”来强制您声明变量。这将防止您犯简单的错误。您不能将范围对象分配给“ .copy”方法,因为方法不会返回值或对象。它会填满您不需要的剪贴板。使用错误处理程序来确保文件正确关闭。
我不确定这段代码是否可以完全按照您的要求进行,但至少可以编译。祝你好运。
Option Explicit
Public Sub Example()
On Error GoTo cleanup
Open ThisWorkbook.Path & "\2019.txt" For Output As #1
Dim Range2 As Range
Range2 = Range("A2", Cells(Rows.Count, "A").End(xlUp))
Dim r As Range
For Each r In Range2
Dim sTemp As String
sTemp = ""
Dim c As Range
For Each c In r.Cells
sTemp = sTemp & c.Text & Chr(9)
Next c
'Get rid of trailing tabs
While Right(sTemp, 1) = Chr(9)
sTemp = Left(sTemp, Len(sTemp) - 1)
Wend
Print #1, sTemp
Next r
cleanup:
Close #1
End Sub