如何在没有双引号的情况下使用excel VBA创建文本文件?

时间:2019-08-27 17:44:04

标签: excel vba excel-2016

将列从特定列转换为文本文件时遇到问题。我找到了一个使用单元格选择的代码,它可以工作,但是我试图使用某个工作簿中某个工作表中的单元格范围而不是选择单元格来实现此目的。反正我能做到吗?

我尝试使用范围选择,但是它不起作用。它给了我对象错误。我想我必须定义活动工作簿和工作表的名称,但是我不确定该怎么做。

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文件时没有引号,并且可以正常工作。我无法从某些工作表和某些列中提取内容。

1 个答案:

答案 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