Notifications
Clear all

Abrir caixa de diálogo VBA

8 Posts
3 Usuários
0 Reactions
2,125 Visualizações
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Prezados, bom dia!

eu tenho o seguinte código para exportar dados em txt, porém ele salva os dados em txt em uma pasta no computador definida no código (eu queria abrir uma caixa de diálogo permitindo ao usuário escolher onde quer salvar o arquivo).

código:

Sub Exportar_TXT()
  Dim lsCaminho As String
  lsCaminho = "C:testeTESTE.txt" ' ao invés de salvar diretamente nesta pasta, eu gostaria de abrir uma caixa de diálogo permitindo escolher o local.
  
    
    Dim iArq, col As Long
    Dim NOME As String
    
    Dim linha As Long
    linha = 1
    
    iArq = FreeFile
        
        Open lsCaminho For Output As iArq
    
    While ThisWorkbook.Sheets("txt saída").Cells(linha, 1) <> ""
    
    NOME = ""
 
col = 1
        'pega o nome na coluna
        While ThisWorkbook.Sheets("txt saída").Cells(linha, col).Value <> ""
            NOME = NOME & Replace(Replace(ThisWorkbook.Sheets("txt saída").Cells(linha, col).Value, " ", "", 1), vbTab, "", 1)
          
            col = col + 1
        Wend
           'escreve o nome  no arquivo txt
        
        
        Print #iArq, NOME
        
       
       
        linha = linha + 1
    Wend
     Close #iArq
End Sub

muito obrigado a todos

 
Postado : 04/06/2018 9:32 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

JNEXCEL,

Boa tarde!

Faça assim:

Sub Exportar_TXT()
    Dim lsCaminho As String
    Dim Pasta As String
    On Error Resume Next
    
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "Buscar pasta"
        .InitialFileName = ThisWorkbook.Path
        .Show
        .AllowMultiSelect = False
        Pasta = .SelectedItems(1)
    End With
    
    
    lsCaminho = Pasta & "TESTE.txt" ' ao invés de salvar diretamente nesta pasta, eu gostaria de abrir uma caixa de diálogo permitindo escolher o local.
    
    
    Dim iArq, col As Long
    Dim NOME As String
    
    Dim linha As Long
    linha = 1
    
    iArq = FreeFile
    
    Open lsCaminho For Output As iArq
    
    While ThisWorkbook.Sheets("txt saída").Cells(linha, 1) <> ""
    
    NOME = ""
    
    col = 1
     'pega o nome na coluna
     While ThisWorkbook.Sheets("txt saída").Cells(linha, col).Value <> ""
        NOME = NOME & Replace(Replace(ThisWorkbook.Sheets("txt saída").Cells(linha, col).Value, " ", "", 1), vbTab, "", 1)
        
        col = col + 1
     Wend
        'escreve o nome  no arquivo txt
    
    
     Print #iArq, NOME
    
    
    
     linha = linha + 1
    Wend
    Close #iArq
End Sub
 
Postado : 04/06/2018 11:12 am
(@jnexcel)
Posts: 0
New Member
Topic starter
 

Agradeço pela atenção.

ai no seu computador deu certo?

aqui demora para gerar e trava o excel (fica aparecendo uma mensagem que o excel precisa ser reiniciado).

quando eu vou abrir o arquivo TXT gerado o mesmo está em branco (a planilha possui dados) :(

 
Postado : 05/06/2018 10:50 am
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

JNEXCEL,

O código que lhe enviei salva o arquivo atual (a própria planilha em uso) como txt. Ela não vai salvar o conteúdo de um arquivo txt que você está criando no caminho informado. Para isso, antes você precisará importar o txt criado para a planilha Excel e aí salvar a mesma como arquivo txt.

 
Postado : 05/06/2018 11:22 am
(@jnexcel)
Posts: 0
New Member
Topic starter
 

então,

vamos lá.

vou passar mais detalhes.

eu tenho uma planilha

a planilha possui informações

exemplo: a célula A1 está digitado: JNEXCEL

o código que postei cópia o conteúdo existente na minha planilha e cria um arquivo no formato TXT, porém o usuário não pode alterar o diretório.

Eu gostaria criar uma opção onde o usuário possa escolher o diretório.

minha intenção é copiar o conteúdo (como eu já faço) porém permitir que o usuário possa escolher onde será salvo.

 
Postado : 05/06/2018 12:30 pm
(@wagner-morel-vidal-nobre)
Posts: 4063
Famed Member
 

Bom... nesse caso, não sei como fazer para abrir uma caixa de diálogo num arquivo txt.

 
Postado : 05/06/2018 12:43 pm
(@boobymcgee)
Posts: 0
New Member
 

JNEXCEL tenta assim:

Sub Exportar_TXT()
  Dim lsCaminho As String
  Dim Nome1 As String
  
  Nome1 = [A1]
  lsCaminho = Application.GetSaveAsFilename(Nome1 & ".txt", fileFilter:="Text Files (*.txt), *.txt")  ' ao invés de salvar diretamente nesta pasta, eu gostaria de abrir uma caixa de diálogo permitindo escolher o local.
  
    
    Dim iArq, col As Long
    Dim NOME As String
    
    Dim linha As Long
    linha = 1
    
    iArq = FreeFile
        
        Open lsCaminho For Output As iArq
    
    While ThisWorkbook.Sheets("txt saída").Cells(linha, 1) <> ""
    
    NOME = ""

col = 1
        'pega o nome na coluna
        While ThisWorkbook.Sheets("txt saída").Cells(linha, col).Value <> ""
            NOME = NOME & Replace(Replace(ThisWorkbook.Sheets("txt saída").Cells(linha, col).Value, " ", "", 1), vbTab, "", 1)
          
            col = col + 1
        Wend
           'escreve o nome  no arquivo txt
        
        
        Print #iArq, NOME
        
       
       
        linha = linha + 1
    Wend
     Close #iArq
End Sub
 
Postado : 07/06/2018 7:19 am
(@jnexcel)
Posts: 0
New Member
Topic starter
 

perfeito

muito obrigado

 
Postado : 08/06/2018 6:13 am