Albarracim Postado Junho 1, 2011 Denunciar Share Postado Junho 1, 2011 Fala galera, sou novo aqui e venho até este fórum sob um leve desespero e acredito que alguém aqui conseguirá me ajudar! Não sou desenvolvedor nem programador nem nada, mas sou curioso o suficiente pra me meter com esse tipo de coisa.É o seguinte, tenho um relatório gigante aqui na minha empresa, em excel, do qual preciso tirar certas informações toda semana. Já gravei uma Macro que me ajudou muito, e com meu BÁSICO e humilde conhecimento, escrevi mais alguns códigos que até agora, diminuíram meu trabalho com este relatório de cerca de 3 horas para 30 minutos, ou seja, já estou muito feliz! :D hahahahaha...Aí vem a segunda parte. Estou precisando de somente mais uma função nessa maldita linguagem de VBA, provavelmente a mais complicada do meu "projeto" pois não consegui fazer NADA funcionar até agora, mas chega de falação e vamos ao que interessa.É um simples PROCV, que eu preciso. Eu tenho uma planilha, com um cabeçalho na primeira linha, então a fórmula começa à partir da segunda linha desta coluna "X" que no caso é a coluna "P", linha 2, sendo assim, "P2".O relatório geralmente varia da quantidade de linhas, pode ser que uma semana tenha x linhas, na outra y linhas e assim vai... Então escrevi um código para contar o número de linhas, começar de baixo para cima até a penúltima linha (desconsiderando a primeira linha que é o cabeçalho), segue o código:Dim linha As Integerlinha = Plan1.UsedRange.Rows.CountFor i = linha To 2 Step -1Beleza até então. Só pra esclarecer, todos aqui na empresa estão usando e irão usar esta minha planilha mágica, e este PROCV se baseia na planilha que utilizamos na semana passada. Para ser mais exato, pegamos a planilha desta semana e fazemos o PROCV manualmente das informações da planilha da semana passada. Got it? Por este motivo, preciso de uma DIALOG BOX como FILE PICKER, para escolher o arquivo que quero utilizar como "matriz" para o PROCV (Planilha anterior). Por que uma frescura dessas? Porque como todos aqui vão usar, cada um guarda a planilha num lugar, então é só ir lá através do diretório onde está o bendito arquivo clicar em cima dele e dar o "OK", simples assim. Preciso que seja dessa forma mesmo.O PROCV manual, em sua natureza fica exatamente assim:=PROCV(A2; 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[bACKLOG 310511 GERAL.xls]Plan1'!$A$2:$O$371; 15; FALSO)Como disse anteriormente, é preciso atentar ao detalhe que a planilha sempre vai variar a quantidade de linhas, então na parte da fórmula em que mostra $A$2:$O$371 é necessário incluir algo do tipo "$A$2:$O$" & CStr(linha), pois é preciso pegar as informações da planilha inteira.Tenho aqui um código de um filepicker que peguei na net e que devolve o caminho completo do item, mas acredito que de acordo com a função do PROCV, será necessário extrair o caminho completo e depois o nome do arquivo entre "[]". Isto é só especulação minha, vocês é quem irão dizer.C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[bACKLOG 310511 GERAL.xls]Fórmula do file picker que retorna o path:'Declare a variable as a FileDialog object. Dim fd As FileDialog 'Create a FileDialog object as a File Picker dialog box. Set fd = Application.FileDialog(msoFileDialogFilePicker) 'Declare a variable to contain the path 'of each selected item. Even though the path is a String, 'the variable must be a Variant because For Each...Next 'routines only work with Variants and Objects. Dim vrtSelectedItem As Variant 'Use a With...End With block to reference the FileDialog object. With fd 'Use the Show method to display the File Picker dialog box and return the user's action. 'The user pressed the action button. If .Show = -1 Then 'Step through each string in the FileDialogSelectedItems collection. For Each vrtSelectedItem In .SelectedItems Msgbox "The path is:" & vrtSelectedItem Next vrtSelectedItem 'The user pressed Cancel. Else End If End With 'Set the object variable to Nothing. Set fd = NothingAcredito que seja só isso. Só mais um detalhe, uma vez esse código ficou em loop comigo, para cada linha que ele lia, ele pedia novamente para eu escolher o arquivo. Então sendo assim, é necessário que ele escolha o arquivo uma só vez e o utilize para todo o serviço. :P Agradeço muito a ajuda de quem puder me dar essa "mãozinha"! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Albarracim
Fala galera,
sou novo aqui e venho até este fórum sob um leve desespero e acredito que alguém aqui conseguirá me
ajudar! Não sou desenvolvedor nem programador nem nada, mas sou curioso o suficiente pra me meter com
esse tipo de coisa.
É o seguinte, tenho um relatório gigante aqui na minha empresa, em excel, do qual preciso tirar certas
informações toda semana. Já gravei uma Macro que me ajudou muito, e com meu BÁSICO e humilde
conhecimento, escrevi mais alguns códigos que até agora, diminuíram meu trabalho com este relatório de
cerca de 3 horas para 30 minutos, ou seja, já estou muito feliz! :D hahahahaha...
Aí vem a segunda parte. Estou precisando de somente mais uma função nessa maldita linguagem de VBA,
provavelmente a mais complicada do meu "projeto" pois não consegui fazer NADA funcionar até agora, mas
chega de falação e vamos ao que interessa.
É um simples PROCV, que eu preciso. Eu tenho uma planilha, com um cabeçalho na primeira linha, então a
fórmula começa à partir da segunda linha desta coluna "X" que no caso é a coluna "P", linha 2, sendo
assim, "P2".
O relatório geralmente varia da quantidade de linhas, pode ser que uma semana tenha x linhas, na outra y
linhas e assim vai... Então escrevi um código para contar o número de linhas, começar de baixo para cima
até a penúltima linha (desconsiderando a primeira linha que é o cabeçalho), segue o código:
Dim linha As Integer
linha = Plan1.UsedRange.Rows.Count
For i = linha To 2 Step -1
Beleza até então. Só pra esclarecer, todos aqui na empresa estão usando e irão usar esta minha planilha
mágica, e este PROCV se baseia na planilha que utilizamos na semana passada. Para ser mais exato, pegamos
a planilha desta semana e fazemos o PROCV manualmente das informações da planilha da semana passada. Got
it? Por este motivo, preciso de uma DIALOG BOX como FILE PICKER, para escolher o arquivo que quero
utilizar como "matriz" para o PROCV (Planilha anterior).
Por que uma frescura dessas? Porque como todos aqui vão usar, cada um guarda a planilha num lugar, então
é só ir lá através do diretório onde está o bendito arquivo clicar em cima dele e dar o "OK", simples
assim. Preciso que seja dessa forma mesmo.
O PROCV manual, em sua natureza fica exatamente assim:
=PROCV(A2; 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[bACKLOG 310511
GERAL.xls]Plan1'!$A$2:$O$371; 15; FALSO)
Como disse anteriormente, é preciso atentar ao detalhe que a planilha sempre vai variar a quantidade de
linhas, então na parte da fórmula em que mostra $A$2:$O$371 é necessário incluir algo do tipo
"$A$2:$O$" & CStr(linha), pois é preciso pegar as informações da planilha inteira.
Tenho aqui um código de um filepicker que peguei na net e que devolve o caminho completo do item, mas
acredito que de acordo com a função do PROCV, será necessário extrair o caminho completo e depois o nome
do arquivo entre "[]". Isto é só especulação minha, vocês é quem irão dizer.
C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[bACKLOG 310511 GERAL.xls]
Fórmula do file picker que retorna o path:
'Declare a variable as a FileDialog object.
Dim fd As FileDialog
'Create a FileDialog object as a File Picker dialog box.
Set fd = Application.FileDialog(msoFileDialogFilePicker)
'Declare a variable to contain the path
'of each selected item. Even though the path is a String,
'the variable must be a Variant because For Each...Next
'routines only work with Variants and Objects.
Dim vrtSelectedItem As Variant
'Use a With...End With block to reference the FileDialog object.
With fd
'Use the Show method to display the File Picker dialog box and return the user's action.
'The user pressed the action button.
If .Show = -1 Then
'Step through each string in the FileDialogSelectedItems collection.
For Each vrtSelectedItem In .SelectedItems
Msgbox "The path is:" & vrtSelectedItem
Next vrtSelectedItem
'The user pressed Cancel.
Else
End If
End With
'Set the object variable to Nothing.
Set fd = Nothing
Acredito que seja só isso. Só mais um detalhe, uma vez esse código ficou em loop comigo, para cada linha
que ele lia, ele pedia novamente para eu escolher o arquivo. Então sendo assim, é necessário que ele
escolha o arquivo uma só vez e o utilize para todo o serviço. :P
Agradeço muito a ajuda de quem puder me dar essa "mãozinha"!
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
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.