Как я могу изменить каталог в этом коде VBA? VBA " Excel в TXT или CSV"

Я действительно хочу изменить каталог этого кода в Application.ActiveWorkbook.Path но я не знаю, куда ее девать.

Public Sub CharacterSV()
    Const DELIMITER As String = "|"
    Dim myRecord As Range
    Dim myField As Range
    Dim nFileNum As Long
    Dim sOut As String

    nFileNum = FreeFile
    Open ActiveWorkbook.Name & ".txt" For Output As #nFileNum
    For Each myRecord In Range("A1:A" & _
                Range("A" & Rows.Count).End(xlUp).Row)
        With myRecord
            For Each myField In Range(.Cells, _
                    Cells(.Row, Columns.Count).End(xlToLeft))
                sOut = sOut & DELIMITER & myField.Text
            Next myField
            Print #nFileNum, Mid(sOut, 2)
            sOut = Empty
        End With
    Next myRecord
    Close #nFileNum
End Sub

Я попытался понять это, и действительно хочу изучить VBA, но я не мог заставить его работать.

спасибо заранее!

27
задан Dubblej
15.11.2022 6:11 Количество просмотров материала 3541
Распечатать страницу

2 ответа

добавьте в код:

Dim fname as string fname = "c:\documents and settings\desktop\" Open fname & ActiveWorkbook.Name & ".txt" For Output As #nFileNum

заменить рабочий стол с каталогом и открыть откроет новый файл в каталоге, заботиться, чтобы написать реальный и правильный путь в fname.

0
отвечен 2022-11-16 13:59

Спасибо за вдохновение.

Я просто прошел мимо другого кода, который сделал его более легким. Потому что я просто хотел добавить файл в каталог, где я работаю, но хотел сделать VBA динамическим.

так что я использовал ActiveWorkbook.FullName вместо ActiveWorkbook.Name. Я также добавил имя из листа к нему в " - " & ActiveSheet.Name &

это окончательный код (также добавлено имя листа):

Public Sub Worksheet_naar_TXT_Pipe_delimiter()
    Const DELIMITER As String = "|"
    Dim myRecord As Range
    Dim myField As Range
    Dim nFileNum As Long
    Dim sOut As String

    nFileNum = FreeFile
    Open ActiveWorkbook.FullName & " - " & ActiveSheet.Name & ".txt" For Output As #nFileNum
    For Each myRecord In Range("A1:A" & _
                Range("A" & Rows.Count).End(xlUp).Row)
        With myRecord
            For Each myField In Range(.Cells, _
                    Cells(.Row, Columns.Count).End(xlToLeft))
                sOut = sOut & DELIMITER & myField.Text
            Next myField
            Print #nFileNum, Mid(sOut, 2)
            sOut = Empty
        End With
    Next myRecord
    Close #nFileNum
End Sub

Спасибо за ваш ответ, это привело меня к идее!

0
отвечен Dubblej 2022-11-16 16:16

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх