Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ler os mesmos arquivos em pastas diferentes (VBA)


andregiordano43

Pergunta

Olá pessoal, tudo bem ?!

Tenho uma dúvida quando à programação em VBA..

Peciso que meu programa faça a leitura dos mesmos arquivos em pastas diferentes automaticamente, sem eu ter que digitar.

Por exemplo:

Sub Macro1()
Workbooks.Open ("C:\Documents\Financeiro\21042010\Rafael.xls")
Workbooks.Open ("C:\Documents\Financeiro\21042010\Jose.xls")
Workbooks.Open ("C:\Documents\Financeiro\21042010\Paulo.xls")
End Sub

Essa parte colocando uma referência fixa de data (no caso a pasta onde o arquivo está armazenado) funcionou legal, agora eu gostaria de saber como posso automatizar para que ele leia em todas as pastas, tipo, do dia 20/04, 19/04, etc...?

Melhor, como faço para definir um período, tipo, quero ler arquivos do dia 19/04 à 21/04...

Sei que é uma dúvida elementar, mas é que estou começando!

Obrigado deste já pela atenção!

André

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Fala Jonathan, tranquilo?!

Consegui fazer o loop para leitura dos arquivos nos diretórios e funcionou corretamente.

A única coisa que está dando problema é quando o arquivo não existe.

Achei na internet o comando abaixo, mas parece que ele funciona só pra VB, não VBA.

Dim fso As Scripting.FileSystemObject
If fso.FileExists(Arquivo) Then
(Executa funções...)

End If

você conhece algum semelhante pra VBA?

Abraços!!

Link para o comentário
Compartilhar em outros sites

  • 0

Nunca utilizei [acronmy=File System Object]FSO[/acronmy] com VBA, então não sei se é possível. Mas se o programa em que está trabalhando for o mesmo desse tópico, você não precisa ler o conteúdo do arquivo, apenas abrir via Workbooks.Open.

Se possível, explique melhor para quê é necessário ler o conteúdo do arquivo.

Link para o comentário
Compartilhar em outros sites

  • 0

Ah, ok.

Outra pergunta cara.

Como faço, no código abaixo para ao invés de ter que definir o Array manualmente ele pegar este conteúdo de uma célula no Excell.

Sub TESTE()
Nomes = Array("Jose", "Mario", "Pedro", "Paulo", "Rafael")
For i = 0 To UBound(Nomes)
Arquivo = "F:\" & Nomes(i)
Workbooks.Open (Arquivo)
Next i
End Sub

Na segunda linha, eu digo, ao invés de encrever o nome do cara deixar para que este conteúdo seja obtido através do valor de uma(ou mais) células?

Abraços!!

Link para o comentário
Compartilhar em outros sites

  • 0

Uma solução é você ler as células de uma coluna usando Cells(linha,coluna) até encontrar um espaço em branco (ou seja, fim da lista). Algo mais ou menos assim:

Dim arquivos() As String
Dim i As Integer
i = 0

While Cells(i + 1, 1) <> ""
    ReDim Preserve arquivos(i)
    arquivos(i) = Cells(i + 1, 1)
    i = i + 1
Wend

Nota:

O comando Redim serve para redimensionar um array e o Preserve indica que os dados devem ser mantidos.

Link para o comentário
Compartilhar em outros sites

  • 0

Então cara, só pra te explicar melhor, estou querendo deixar aberto para o usuário a partir de uma planilha de controle para que ele mesmo digite o nome dos arquivos que é para rastrear. Então apartir do código que você me passou, fiz o seguinte:

Dim var As Workbook
Dim controle As Workbook

controle = "C:\Documents and Settings\Andre\Desktop\Controle_New.xls"
    
    Pastas = Array("1904\", "2004\", "2104\")
    For p = 0 To UBound(Pastas)
    Pasta = "G:\" & Pastas(p)

    Nomes = Array(controle.Worksheets(Plan1).Cells(2, 1))
    For i = 0 To UBound(Nomes)
    Arquivo = "G:\" & Pastas(p) & Nomes(i)
    Workbooks.Open (Arquivo), , True
    
    Set var = Workbooks.Open(Arquivo)
.
.
.
(resto do código)

Minha intenção é que ele leia o nome do arq. contido na célula A2 da planilha de controle, porém ele está apresentando o seguinte erro:

"A variável do objeto ou a variável do bloco With não foi definida"

e seleciona essa linha "controle = "C:\Documents and Settings\Andre\Desktop\Controle_New.xls"

Tem alguma forma mais simples de eu definir dentro do Array alguma célula para ele ler?

Abraços!!!

Editado por kuroi
Adicionar tag CODE
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...