Jump to content
Fórum Script Brasil
  • 0

Abrir dois arquivos texto num mesmo código


Zow

Question

Pessoal,

Estou fazendo uma Macro que lê dados de um arquivo texto, gera uma planilha com esses dados organizados e abre e edita outro arquivo texto com apenas alguns dos dados.

Não estou conseguindo colocar a abertura e manipulação em um único código. pois quando vou abrir o segundo arquivo para edição, me retorna a mensagem de que o arquivo já está aberto.

É possível abrir dois arquivos texto ao mesmo tempo?

como posso fazer isso?

Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Segue o código:

While (paciência)

Ajuda++

rsrsrs :blush:

Option Explicit
Public Sub carregavolumetotal()
    'Variáveis para uso no loop
    Dim Arquivo As Integer
    Dim CaminhoArquivo As String
    Dim TextoArquivo As String
    Dim TextoProximaLinha As String
    Dim ContadorLinha As Long
   
'Declaração de variáveis para uso no arquivo
    Dim nome As String

    'Configura a leitura do arquivo
    Arquivo = FreeFile
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'LISTAGEM DOS ARQUIVOS (essa função eu baixei da net e serviu pro meu caso, então não mudei)
    'Ela abre os arquivos de um diretório e vai listando eles, no meu caso usei isso para que os arquivos fossem sendo manipulados automaticamente.
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim oSearch As FileSearch

   Dim strDirName As String:  strDirName = InputBox("Digite o caminho do diretório:", "Caminho")
   Dim strPrompt As String: strPrompt = strDirName & Chr(13) & Chr(13)
   Dim I As Long

   Set oSearch = Application.FileSearch

   With oSearch

      .LookIn = strDirName
      .SearchSubFolders = False
      .Filename = "*.*"
      .Execute
      If .FoundFiles.Count > 0 Then

         For I = 1 To .FoundFiles.Count
            strPrompt = strPrompt & .FoundFiles(I) & Chr(13)
    
    
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'INICIO DA PROGRAMAÇÃO: RECEBE O NOME DOS ARQUIVOS, CRIA PLANILHA E IMPRIME A INFORMAÇÃO
    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

    'Abre o arquivo para leitura
    Open .FoundFiles(I) For Input As Arquivo
    ContadorLinha = 1

    'Lê o conteúdo do arquivo linha a linha
    Do While Not EOF(Arquivo)
        Line Input #Arquivo, TextoProximaLinha
        TextoProximaLinha = TextoProximaLinha & vbCrLf
        TextoArquivo = TextoArquivo & TextoProximaLinha
        
        'Armazenando as informações de cada linha do texto nas poições relativas 
        'OBS: AQUI O ARQUIVO É GIGANTESCO, ENTÃO VOU RESUMIR
        
        INFO = Mid(TextoProximaLinha, 1, 2)
        INFO2 = Mid(TextoProximaLinha, 3, 8)
        INFO3 = Mid(TextoProximaLinha, 11, 2)
             
             
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    'Preenche as colunas na planilha 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        
        ThisWorkbook.Sheets("planilha").Cells(ContadorLinha, 1).Value = INFO1
        ThisWorkbook.Sheets("planilha").Cells(ContadorLinha, 2).Value = INFO2

 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
' NESTA PARTE EU QUERIA ABRIR UM OUTRO ARQUIVO TEXTO E EDITÁ-LO COM AS INFORMAÇÕES DENTRO DESSE MESMO LOOP!!!!
' MAS QUANDO USO O OPEN, ELE DIZ QUE O ARQUIVO JÁ ESTÁ ABERTO!!!
' 
'
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     
        
        ContadorLinha = ContadorLinha + 1
    Loop
        
        
    'Coloca na janela de verificação imediata
    Debug.Print TextoArquivo

    'Fecha o arquivo
    Close Arquivo
    
        
    'Preenchendo as colunas da planilha
    
    ThisWorkbook.Sheets("planilha").Cells(1, I).Value = nome
      
    'CONTINUAÇÃO DO FOR DA LISTAGEM DE ARQUIVOS
    
Listagem:
 Next I
      Else
         strPrompt = strPrompt & "No files found."
      End If

      ' Display the file list in a message box.
      MsgBox strPrompt

   End With
  
End Sub

Link to comment
Share on other sites

  • 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'

' NESTA PARTE EU QUERIA ABRIR UM OUTRO ARQUIVO TEXTO E EDITÁ-LO COM AS INFORMAÇÕES DENTRO DESSE MESMO LOOP!!!!

' MAS QUANDO USO O OPEN, ELE DIZ QUE O ARQUIVO JÁ ESTÁ ABERTO!!!

'

'

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

E está mesmo !

se ao chegar nessa parte você não mais necessitar usar o primeiro arquivo, feche-o...com a instrução "Close #suaVariavel".

Se ainda vai precisar do mesmo aberto, aconselho a utilizar mais um FreeFile... ou para simplificar, ao invés de criar variáveis usar apenas números...tipo:

Open .FoundFiles(I) For Input As #1

Open .FoundFiles(I) For Input As #2

Bem, é minha sugestão... pois você está usando o editor VBA do Excel, e poucas vezes o utilizo... :rolleyes:

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...