Página 1 de 1
Ler dados de outra planilha fechada
Enviado: 11 Jun 2016 às 15:46
por FelipeArruda
Boa tarde!
Gostaria de saber se é possível ler através de uma macro(contar a quantidade de linhas não vazias) de outra planilha sem precisar abri-la.
Atualmente tenho uma planilhar em excel que tem alguns nomes das planilhas que são importadas de um sistema, preciso que através de uma coluna (que contenha os nomes) vá ate o diretório (por uma variável) e localize os arquivos que contenha os nomes e para cada planilha ele abra e faça uma contagem das linhas não vazias.
A respeito da contagem, já consegui fazer, porém esbarrei em não conseguir fazer com que ao executar o macro ele vá até o diretório e localize a planilhas.
Ex: através de uma coluna em uma planilha padrão ele vá ao diretório localize a planilha e faça a contagem das linhas.
Ler dados de outra planilha fechada
Enviado: 12 Jun 2016 às 03:40
por DJunqueira
Se vc tem o diretório e tem o nome da planilha vc não precisa de macro p/ contar o número de linhas com valor, basta usar a função:
=CONT.VALORES('D:\nomediretório\Planilhas\[NomePlanilha.xlsx]Plan1'!A:A)
Vc tb pode fazer Nova Consulta em Dados p/ retornar o número de linha em cada arquivo q vc desejar. Depois é só clicar no botão Atualizar.
Ler dados de outra planilha fechada
Enviado: 12 Jun 2016 às 13:38
por FelipeArruda
Entendi, porém eu tenho cerca de 100+ planilhas neste diretório que precisa ser feito a contagem e os números de registros variam de acordo com a planilha, algumas eu tenho poucos registros outras eu tenho quase milhões de registros, por isso achei mais fácil fazer uma macro que pega os valores e pare quando for a célula vazia.
Concorda comigo? Ou tem outra solução que possa me ajudar?
Att
Re: Ler dados de outra planilha fechada
Enviado: 14 Jun 2016 às 08:57
por alexandrevba
Bom dia!!
Isso deve ajudar, no mais é só adaptar.
Código: Selecionar todosSub AleVBA_2322()
Dim wb As Workbook, wbXLS As Workbook
Dim sPath As String, sFilename As String
Dim NbRows As Integer, rg As Range
DisplayAlerts = False
Set wb = ThisWorkbook
Application.ScreenUpdating = False
sPath = "C:\Users\AleVBA\" 'Caminho de arquivos XLS
sFilename = Dir(sPath & "*.xls")
On Error Resume Next
Do While Len(sFilename) > 0
If sFilename <> ThisWorkbook.FullName Then
Set wbXLS = Workbooks.Open(sPath & sFilename) 'Abre arquivos
NbRows = wbXLS.Sheets(1).Range("A60000").End(xlUp).Row 'Num de linhas (favor ajustar qtd lin para seu caso)
'Na guia de nome AleVBA abaixo, coluna A ficará os nomes e Coluna B qtd de linhas
Set rg = wb.Worksheets("AleVBA").Range("A60000").End(xlUp).Offset(1, 0)
rg = sFilename
rg.Offset(0, 1) = NbRows
wbXLS.Close False 'Fecha os arquivos
End If
sFilename = Dir
Loop
Application.ScreenUpdating = True
DisplayAlerts = True
End Sub
Att
Re: Ler dados de outra planilha fechada
Enviado: 15 Jun 2016 às 13:16
por FelipeArruda
Agora estou com um pouco de dificuldade de encontrar a planilha aberta.
Tenho uma planilha(Padrao.xlsm) que os valores iram ser gravados nela, e ao clicar no botão de atualizar os dados ele abre as planilhas faz a contagem e guarda na variável.
Porém não estou conseguindo fazer com que ele grave essas informações na planilha(Padrao.xlsm), pois quando mando ele abrir as outras planilhas para fazer a contagem ele grava na planilha em aberta(de contagem).
Há uma forma de pegar essas planilha e gravar nela?
Código: Selecionar todosSub atualizaDados()
Dim sPath As String
Dim linha As Integer
Dim coluna As Integer
Dim wb As Workbook, wbXLS As Workbook
Dim a As String
Dim b As String
Dim qtd As Integer
varColuna = 1
varLinha = 1
varConteudo = 1
'Define a linha e coluna que ira comecar
linha = 3
coluna = 2
'Caminho da pasta dos arquivos
sPath = "C:\Users\felipe.arruda\Desktop\Nova pasta\"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set arquivo = FSO.GetFolder(sPath)
'Varre cada linha da coluna (linha x coluna)
While Cells(linha, coluna).Value <> Empty
a = UCase("sgu_" & Cells(linha, coluna).Value & ".csv")
For Each arq In arquivo.Files
b = UCase(arq.Name)
If a = b Then
'Abre o arquivo
Set wbook = Application.Workbooks.Open(sPath & arq.Name)
'Faz a contagem de linhas no arquivo
Do While varConteudo <> Empty
varLinha = varLinha + 1
varConteudo = Cells(varLinha, varColuna).Value
Loop
'Alimenta a planilha
Sheets(1).ActiveCell.Offset("C", linha).Value = "a"
'Fecha o arquivo
wbook.Close
End If
Next arq
linha = linha + 1
Wend
End Sub
Re: Ler dados de outra planilha fechada
Enviado: 15 Jun 2016 às 13:36
por alexandrevba
Boa tarde!!!
Se você observou o código na linha
O arquivo (somente o arquivo) que estiver aberto e com o código dentro e com uma guia chamada "
AleVBA" conforme abaixo.
Código: Selecionar todosSet rg = wb.Worksheets("AleVBA").Range("A60000").End(xlUp).Offset(1, 0)
Então os dados serão mostrados neste arquivo.
Por tanto, insira o código dentro do arquivo
Padrao.xlsm, deixe só esse arquivo aberto, rode a macro!!
Não se esqueça até apontar o caminho dos arquivos de deseja contar as linhas
Att
Ler dados de outra planilha fechada
Enviado: 15 Jun 2016 às 17:02
por FelipeArruda
Meu caro muito obrigado pela ajuda.
Consegui progredir...
Irei terminar de fazer o que preciso, e assim que conseguir concretizar irei fechar o tópico, por enquanto deixarei aberto para não ficar criando outros.