Как создать текстовый файл с помощью Excel VBA без двойных кавычек?

У меня проблема с преобразованием столбцов из определенного столбца в текстовый файл. Я нашел код, в котором используется выбор ячеек, и он работает, но я пытаюсь выполнить это, используя диапазон ячеек с определенного листа из определенной книги, а не выбирая ячейки. В любом случае я могу это сделать?

Я пробовал использовать выбор диапазона, но это не сработало. это дает мне ошибку объекта. Я думаю, мне нужно определить имя активной книги и листа, но я не уверен, как это сделать.

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

Мой ожидаемый результат - отсутствие кавычек при преобразовании в текстовый файл, и это работает. У меня проблемы с извлечением из определенных листов и определенных столбцов.


person joe    schedule 27.08.2019    source источник


Ответы (1)


Объявите свои переменные рядом с их использованием, чтобы вы могли отслеживать их. Используйте "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
person HackSlash    schedule 27.08.2019