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

Visual Basic Excel VBA


Albarracim

Pergunta

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

Até agora não há respostas para essa pergunta

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,3k
    • Posts
      652,2k
×
×
  • Criar Novo...