MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Converter arquivo de texto UNIX em Windows

    Compartilhe

    renatoveras
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 19/10/2015

    [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  renatoveras em Sex 03 Jun 2016, 19:37

    Olá amigos, gostaria de uma forma de converter arquivos de texto do formato UNIX para Windows em VBA.

    Já procurei uma forma objetiva mas não achei.

    Grato

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  ahteixeira em Seg 06 Jun 2016, 13:05

    Olá Renato, poste um arquivo de exemplo para podermos testar.
    Abraço

    renatoveras
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 19/10/2015

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  renatoveras em Seg 06 Jun 2016, 13:08

    Oi Teixeira, postarei no início da tarde.

    Grato pela atenção.

    renatoveras
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 19/10/2015

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  renatoveras em Seg 06 Jun 2016, 17:23

    Seguem arquivos com codificação UNIX e WINDOWS e Módulo CommonDialog para controle de abertura de janelas windows.

    Consegui adaptar um código que converte mas por algum motivo ele coloca 14 espaços no início após a conversão.

    Não entendi como a função converte para retirar esses indesejados espaços.

    Estou dependendo desse código para ajustar uma importação...

    Qualquer ajuda é bem vinda.

    'Código do inicial para buscar o arquivo a ser importado:

    'Verifica se a pasta C:\FEBRABAN existe, se não existir cria
       If Dir("C:\FEBRABAN", vbDirectory) = "" Then
           MkDir ("C:\FEBRABAN")
       End If

    'Trecho responsável pela captura do arquivo a ser importado
           Dim Endereco As String
           Dim abrirArquivo As New CommonDialog
       
           Endereco = abrirArquivo.GetOpenFile(Me.hWnd, "Selecione o arquivo FEBRABAN V2 a ser importado", "")
       
           If Len(Endereco) > 0 Then
               CaminhoArquivo = Endereco
           Else
               txt_Arquivo = vbNullString
           End If
           
           Me.Recalc
           Me.Repaint
           Me.Requery
       
           'Cria uma cópia do arquivo informado para realizar a importação dos dados
           FileCopy CaminhoArquivo, "C:\FEBRABAN\FEBRABAN.txt"
         
           'chama a função de conversão
           UNIX2DOS

    Segue a função:

    Sub UNIX2DOS()
       
       'função que converte arquivo de texto de UNIX (TELEBRASILIA/BRASILTELECOM/OI) para o formato Windows Access
       
       'Variáveis de entrada
       Dim Originalfile As String
           
       Dim OpenFileNum, SaveFileNum As Integer
       Dim NewFileBuffer As String
       
       Originalfile = "C:\FEBRABAN\FEBRABAN.txt"
       
       NewFile = Left(Originalfile, Len(Originalfile) - 4) + "_TEMP.txt"
       
       OpenFileNum = FreeFile
       Open Originalfile For Binary As #OpenFileNum
       
       NewFileBuffer = Space(LOF(OpenFileNum))
       
       SaveFileNum = FreeFile
       Open NewFile For Output As #SaveFileNum
       
       Get #OpenFileNum, , NewFileBuffer
       NewFileBuffer = Replace(NewFileBuffer, Chr(13), vbCrLf)
       
       Print #SaveFileNum, , NewFileBuffer
       
       Close #SaveFileNum
       Close #OpenFileNum
       
       Kill "C:\FEBRABAN\FEBRABAN.txt"
           
       Name "C:\FEBRABAN\FEBRABAN_TEMP.txt" As "C:\FEBRABAN\FEBRABAN.txt"

    End Sub
    Anexos
    OI_UNIX_e_VIVO_WINDOWS.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (4 Kb) Baixado 7 vez(es)

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  ahteixeira em Ter 07 Jun 2016, 12:07

    Olá Renato, veja se atende.
    Código:
    Sub ConverterDeUnix()
    'ahteixeira 2016 para MaximoAccess
        
        Dim fOrigem$, fDestino$, Linha$
        
        fOrigem = Application.CurrentProject.Path & "\OI_UNIX.txt"
        fDestino = Application.CurrentProject.Path & "\OI_UNIX_Convertido.txt"
     
        Open fOrigem For Input Access Read As #1
        
        Line Input #1, Linha
        If EOF(1) Then
            Linha = Replace(Linha, vbLf, vbCrLf)
            Close #1
            Open fDestino For Output Access Write As #1
            Print #1, Linha
            Close #1
        Else
            Close #1
        End If
    End Sub
    Pode testar na immediate.
    Abraço

    renatoveras
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 19/10/2015

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  renatoveras em Ter 07 Jun 2016, 18:25

    Oi Teixeira,

    Funcionou de forma impecável!

    Muitíssimo obrigado.

    Fiz pequeníssimos ajustes para funcionar aqui, só não entendi a expressão "testar na immediate"

    Segue o código final, só mudei os endereços pra ficarem fixos:

    Código:
    Sub ConverterDeUnix()
    'ahteixeira 2016 para MaximoAccess
      
       Dim fOrigem$, fDestino$, Linha$
      
       fOrigem = "C:\FEBRABAN\OI_UNIX.txt"
      
       fDestino = "C:\FEBRABAN\OI_UNIX_Convertido.txt"
      
       Open fOrigem For Input Access Read As #1
        
       Line Input #1, Linha
       If EOF(1) Then
           Linha = Replace(Linha, vbLf, vbCrLf)
           Close #1
           Open fDestino For Output Access Write As #1
           Print #1, Linha
           Close #1
       Else
           Close #1
       End If
    End Sub

    Mais uma vez obrigado!

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  ahteixeira em Ter 07 Jun 2016, 19:06

    Olá, obrigado pelo retorno.
    Quanto à janela imediata é uma forma rápida de testar apenas código, veja:
    [Você precisa estar registrado e conectado para ver esta imagem.]

    Abraço

    renatoveras
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 61
    Registrado : 19/10/2015

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  renatoveras em Ter 07 Jun 2016, 22:46

    Ah sim, entendi, obrigado.

    ahteixeira
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 3214
    Registrado : 15/03/2013

    Re: [Resolvido]Converter arquivo de texto UNIX em Windows

    Mensagem  ahteixeira em Qui 09 Jun 2016, 11:08

    cheers

      Data/hora atual: Qua 07 Dez 2016, 18:16