Como posso alterar o diretório neste código VBA? VBA “Excel para TXT ou CSV”

0

Eu realmente quero alterar o diretório desse código em Application.ActiveWorkbook.Path , mas não sei onde colocá-lo.

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

Eu tentei descobrir e realmente quero aprender VBA, mas não consegui fazê-lo funcionar.

Obrigado antecipadamente!

    
por Dubblej 10.04.2016 / 18:40

2 respostas

0

Obrigado pela inspiração.

Acabei de passar por outro código que facilitou muito. Porque eu só queria adicionar o arquivo no diretório do qual estou trabalhando, mas queria tornar o vba dinâmico.

Então usei ActiveWorkbook.FullName em vez de ActiveWorkbook.Name . Eu também adicionei o nome da folha a ele em " - " & ActiveSheet.Name &

Este é o código final (também adicionado o nome da folha):

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

Obrigado pela sua resposta, isso me trouxe à ideia!

    
por 10.04.2016 / 21:19
0

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

Substitua a área de trabalho pelo seu diretório e a abertura abrirá o novo arquivo em seu diretório, tome cuidado para escrever um caminho real e correto em fname.

    
por 10.04.2016 / 19:22