Página 1 de 1

Estrutura de repetição

Enviado: 17 Jun 2017 às 03:07
por DanielCostta97
Boa noite,

Tenho uma pasta de trabalho com 32 planilhas sendo que 31 são dos respectivos dias do mês e uma com o resultado consolidado, cada planilha possui 13 abas, ou seja uma planilhas com 13 sub-planilhas, "aba" , eu gostaria de implementar uma estrutura de repetição que abriria planilha por planilha depois iri na "aba2" da mesma e extraíste as informações da cell 9, depois fecharia a planilha e partiria para a outra implementado o mesmo procedimento, sendo que colará na última célula para que as informações fiquem alinhadas uma em baixo da outra, no final depois de ter aberto as 31 planilhas de dias extraído as informações da "aba2" cell 13 colado na planilha consolidado mês na "aba2" cell 13 , o código implementasse uma MsgBox com Transferência realizada com Sucesso !

Se possível estou estudando meios para implementar este código na minha planilha mas não consigo achar uma estrutura de repetição, loop ?

Desde já agradeço !

Re: Estrutura de repetição

Enviado: 17 Jun 2017 às 09:21
por osvaldomp
Se os nomes dos arquivos seguem um modelo do tipo "MeuArq1", "meuArq2", "MeuArq3", ... é possível colocar o nome do arquivo no próprio código e criar um Loop incrementando o número que está no final do nome.
Algo assim:
Código: Selecionar todos
For i = 1 To 31
 nomeArq = "MeuArq" & i
 'código para abrir o arquivo
Next i
Mas se os nomes não seguem um modelo que possa ser tratado dessa forma, os nomes completos dos arquivos deverão ser escritos ou no código, em forma de matriz, ou em um intervalo da planilha.

Sugiro que você grave uma macro com a operação desejada para um dos arquivos e depois coloque o código aqui para ajustes.

Por meio de fórmulas também é possível obter dados de outros arquivos.

Re: Estrutura de repetição

Enviado: 17 Jun 2017 às 19:16
por DanielCostta97
Olá,

Meu amigo eu implementei o seguinte código mas estou tendo um probleminha com erro

Sub Atualizar_2()

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

For i = 1 To 31

[T.IACUMULADO = T.i 1 & i] & "O erro está aqui !"

caminho = Sheets("ACOMP").Range("n4").Value
ControleTI = Sheets("ACOMP").Range("n3").Value

Workbooks.Open Filename:= _
caminho & "/T.I 1.xlsm"

Range("I2:I2598").Select
Selection.Copy
Windows(ControleTI & ".xlsm").Activate
Sheets("ACOMP").Select
Range("i2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, skipBlanks _
:=False, Transpose:=False

Windows("T.I 1.xlsm").Activate
ActiveWindow.Close

Next i

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False

MsgBox "Transferência realizada com Sucesso!", vbOKOnly, "Transferência"

End Sub

Re: Estrutura de repetição

Enviado: 17 Jun 2017 às 22:06
por osvaldomp
DanielCostta97 escreveu:
[T.IACUMULADO = T.i 1 & i] & "O erro está aqui !"
Explique cada termo dessa expressão, o que significa/qual a sua finalidade.
T, IACUMULADO, T.i, , o ponto após o T


ControleTI = Sheets("ACOMP").Range("n3").Value
Explique o que é "ControleTI "

dica:
Application.DisplayAlerts = False
Application.EnableEvents = False
Os comandos acima me parece que são desnecessários. Notadamente evite o uso do segundo nesse seu código.

sugestão - Crie o hábito de sempre declarar as variáveis.


Estrutura de repetição

Enviado: 19 Jun 2017 às 00:14
por DanielCostta97
TI ACUMULADO é o nome da minha planilha final "acumulado", T.I são as planilha que eu desejo buscar as informações

Re: Estrutura de repetição

Enviado: 19 Jun 2017 às 09:27
por osvaldomp
Código: Selecionar todos
Sub Teste1()
 Dim nomeArq As String, i As Long, caminho As String
  caminho = Sheets("ACOMP").Range("N4").Value
   For i = 1 To 31
    nomeArq = "T.I" & i
    Workbooks.Open Filename:=caminho & nomeArq & ".xlsm"
   Next i
End Sub
Código: Selecionar todos
Sub Teste2()
 Dim i As Long, caminho As String
  caminho = Sheets("ACOMP").Range("N4").Value
   For i = 1 To 31
    Workbooks.Open Filename:=caminho & "T.I" & i & ".xlsm"
   Next i
End Sub