Notifications
Clear all

dados em uma pasta fechada

9 Posts
1 Usuários
0 Reactions
2,818 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Ola pessoal preciso acessar dentro de um diretorio orçamento, varias pastas e cada pasta tem um orçamento de onde preciso pegar alguns valores para montar uma planilha de custos.
Alguem conhece algum codigo que consiga extrair estas informaçoes das planilhas fechadas e lançadas em outra planilha.
Estou anexando os modelos de como os dados estão e como devem ficar.
Desde ja agradeço qualquer dica....

 
Postado : 05/11/2012 5:28 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

geroeane, de uma olhada nos links abaixo :

Importação de dados
viewtopic.php?f=10&t=4388&p=22179&hilit=fechada#p22179

Criação de macro de copia e atualização de dado
viewtopic.php?f=16&t=2869&hilit=trocar+48+macros&start=10

Obter Dados de Pastas de Trabalho Fechadas
http://www.ambienteoffice.com.br/excel/ ... _fechadas/

Se realizar a Pesquisa no Forum encontrara varios outros modelos e dicas.

[]s

 
Postado : 05/11/2012 7:52 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

obrigado pelos links, ja tinha pesquisado mas não achei esta variedade que você colocou, vou tentar adaptar a minha necessidade qualquer duvida dou um alo....

 
Postado : 06/11/2012 11:02 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Mauro, se estiver errado corrija, os exemplos abaixo são para pegar uma planilha em pastas defenidas.
Talvez expliquei errado,
TEnho um diretorio
C: Orcamento
Dentro deste diretorio tenho varias outras pastas Vou chamar de Orcamento1, orcamento2..... e dentro de cada pasta orcamento1 por exemplo tenho a planilha orca2012_1
O unico fator igual em todas são o nome da planilha (fornecedor e as celulas que mencionei acima)
Preciso utilizar uma macro para pegar todos os dados de todas as pastas....
`
Pergunta é possivel fazer isto....

 
Postado : 06/11/2012 11:39 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Continuo com a duvida de como conseguir abrir diversas pastas com nome de planilhas diferentes e lançar os dados em uma unica planilha.
Consegui o codigo dos links do mauro para buscar os dados de uma unica planilha e uma unica pasta, pergunta só ér possivel trazer os dados de uma unica pasta, sera que não seria possivel pegar estes nomes e lançar em uma lista para depois implementar a rotina abaixo com um loop...:

Sub ReadDataFromAllWorkbooksInFolder()
Dim FolderName As String, wbName As String, cValue As Variant
Dim wbList As String, sValuePlan1 As String
Dim cValue2 As Variant

'Path (Diretorio) -Ajustar o Caminho neste caminho
FolderName = "C:UsersusuarioDownloads"

'Nome do Arquivo de onde extrairemos a informação
wbName = Dir(FolderName & "" & "201117194.xlsm")
'Armazenamos nas Variaveis
wbList = wbName
wbName = Dir

'le o Valor no workbook
cValue = GetInfoFromClosedFile(FolderName, wbList, "Fornecedor", "B5")
cValue2 = GetInfoFromClosedFile(FolderName, wbList, "Fornecedor", "B3")

'Armazenamos o Valor na variavel
sValuePlan1 = cValue

'Coloca o Valor na Celula
Cells(1, 1).Formula = cValue
Cells(1, 2).Formula = cValue2

End Sub

Private Function GetInfoFromClosedFile(ByVal wbPath As String, _
wbName As String, _
wsName As String, _
cellRef As String) As Variant

Dim arg As String
GetInfoFromClosedFile = ""

If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""

If Dir(wbPath & "" & wbName) = "" Then Exit Function

arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)

On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)

End Function

 
Postado : 07/11/2012 7:37 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Veja se atende;
alterei a função (somente umalinha excluida)

Private Function GetInfoFromClosedFile(ByVal wbPath As String, wbName As String, wsName As String, cellRef As String) As Variant

Dim arg As String
GetInfoFromClosedFile = ""

If Right(wbPath, 1) <> "" Then wbPath = wbPath & ""

arg = "'" & wbPath & "[" & wbName & "]" & _
wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1)

On Error Resume Next
GetInfoFromClosedFile = ExecuteExcel4Macro(arg)

End Function

Aqui faz o loop "lendo" as planilhas

Sub ReadInFolder()
Dim sDir As String, sPath As String, R As Long
'começando na linha
R = 8
'Path (Diretorio) -Ajustar o Caminho neste caminho
sPath = ThisWorkbook.Path & "Teste custo" 'Aqui está pegando no mesmo diretorio em que está a planilha master e seu subdiretorio
'Acrescenta a "" se necessario
If Right(sPath, 1) <> "" Then
    sPath = sPath & ""
    Else
    sPath = sPath
End If
'altera temporariamente o diretorio de trabalho
ChDir sPath
'Procura por qq arquivo que tenha "xls" na extensão
sDir = Dir("*.xls?")
'Executa enquanto encontrar algum arquivo
Do While sDir <> ""
    'Verifica se o nome encontrado não é o da planilha ativa
    If sDir <> ThisWorkbook.Name Then
 
'Lê eColoca o Valor na Celula
    Sheets("2012").Cells(R, 1).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B5")
    Sheets("2012").Cells(R, 2).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B3")
    sDir = Dir
    End If
R = R + 1
Loop
End Sub
 
Postado : 07/11/2012 8:44 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Reinaldo é quase isso, dentro da pasta "teste custo" tenho muitas outras pastas (de 50 a 100) e em cada pasta desta tenho a planilha. Se não for possivel pegar os dados em tantas pastas vou sugerir ao pessoal para colocar as planilhas em uma unica pasta, deixando os outros documentos (fotos, desenhos words) nas pastas individuais.
Mesmo assim agradeço sua atenção para o problema, vou analisar mais alguns codigo e fazer alguns testes para ver se consigo ajeitar...
Fiz uma alteração no seu codigo ficou assim :
Alterei esta parte :
de:
'começando na linha
R = 8

para:
R = Sheets("2012").Cells(Rows.Count, 1).End(xlUp).Row + 1

Aqui não ache algo para ampliar uma variavel :

sPath = ThisWorkbook.Path & "Teste Custo" 'nesta parte é que a coisa da pegando tem como criar mais uma variavel para abrir mais subdiretorios

Dim sDir As String, sPath As String, R As Long
    
'começando na linha
R = Sheets("2012").Cells(Rows.Count, 1).End(xlUp).Row + 1

'Path (Diretorio) -Ajustar o Caminho neste caminho
sPath = ThisWorkbook.Path & "Teste Custo"]
'Acrescenta a "" se necessario
If Right(sPath, 1) <> "" Then
    sPath = sPath & ""
    Else
    sPath = sPath
End If
'altera temporariamente o diretorio de trabalho
ChDir sPath
'Procura por qq arquivo que tenha "xls" na extensão
sDir = Dir("*.xlsm")
'Executa enquanto encontrar algum arquivo
Do While sDir <> ""
    'Verifica se o nome encontrado não é o da planilha ativa
    If sDir <> ThisWorkbook.Name Then
 
'Lê eColoca o Valor na Celula
    Sheets("2012").Cells(R, 1).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B5")
    Sheets("2012").Cells(R, 2).Formula = GetInfoFromClosedFile(sPath, sDir, "Fornecedor", "B3")
    sDir = Dir
    End If
R = R + 1
Loop
End Sub
 
Postado : 07/11/2012 5:11 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Não tenho certeza de ter entendido, porem vc pode por exemplo listar todos os caminhos / arquivos em uma planilha e "mandar" avariavel ler esses caminhos.
De tb uma lida no help da função Dir (posicione o cursor sobre a palavra e tecle F1) e veja o exemplo sobre diretorios e subdiretorios.

 
Postado : 07/11/2012 7:13 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Aproveitando a dica do Reinaldo, de uma olhada no link abaixo, baixe o exemplo, tem varias rotinas e uma delas cria uma lista todos os arquivos no Diretorio e Subdiretorio :

Gerar Árvore de Todos Arquivos e Subpastas
http://www.ambienteoffice.com.br/excel/ ... _uma_pasta

[]s

 
Postado : 07/11/2012 8:14 pm