none
Visual Basic Excel VBA - Português RRS feed

  • 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! biggrin.gif 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. tongue.gif 

    Agradeço muito a ajuda de quem puder me dar essa "mãozinha"!
    quarta-feira, 1 de junho de 2011 16:31

Respostas

  • Olá,

    Acho que é possível descomplicar bastante seu processo.

    Pelo que entendi, você quer mudar a Pasta de Trabalho onde o PROCV busca os dados, certo? Uma forma de resolver:

    -No Excel, pressione Ctrl+U e clique em Opções

    -Em Localizar, coloque, por exemplo, 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[BACKLOG 310511 GERAL.xls]Plan1'

    -Substituir por, insira (por exemplo), 'C:\Documents and Settings\filipe.fragasse\Desktop\Outros\[Outra Planilha.xls]Plan123'

    No campo Em, selecione Pasta de Trabalho

    No campo Examinar, selecione Fórmulas

    Clique em substituir tudo.

    Em relação à fórmula do PROCV, em vez de usar algo como:

    =PROCV(A2; 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[BACKLOG 310511 GERAL.xls]Plan1'!$A$2:$O$371; 15; FALSO)

    use

    =PROCV(A2; 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[BACKLOG 310511 GERAL.xls]Plan1'!$A:$O; 15; FALSO)

    dessa forma, todas as linhas serão pesquisadas e você não precisa se preocupar em saber qual é a última.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    • Marcado como Resposta Albarracim terça-feira, 7 de junho de 2011 12:41
    quarta-feira, 1 de junho de 2011 19:11
    Moderador
  • Como faço para postar a planilha aqui pra você ver?

    http://felipebenza.wordpress.com/como_disponibilizar_um_arquivo/


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    • Marcado como Resposta Albarracim terça-feira, 7 de junho de 2011 16:54
    terça-feira, 7 de junho de 2011 14:21
    Moderador

Todas as Respostas

  • Olá,

    Acho que é possível descomplicar bastante seu processo.

    Pelo que entendi, você quer mudar a Pasta de Trabalho onde o PROCV busca os dados, certo? Uma forma de resolver:

    -No Excel, pressione Ctrl+U e clique em Opções

    -Em Localizar, coloque, por exemplo, 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[BACKLOG 310511 GERAL.xls]Plan1'

    -Substituir por, insira (por exemplo), 'C:\Documents and Settings\filipe.fragasse\Desktop\Outros\[Outra Planilha.xls]Plan123'

    No campo Em, selecione Pasta de Trabalho

    No campo Examinar, selecione Fórmulas

    Clique em substituir tudo.

    Em relação à fórmula do PROCV, em vez de usar algo como:

    =PROCV(A2; 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[BACKLOG 310511 GERAL.xls]Plan1'!$A$2:$O$371; 15; FALSO)

    use

    =PROCV(A2; 'C:\Documents and Settings\filipe.fragasse\Desktop\Backlog\[BACKLOG 310511 GERAL.xls]Plan1'!$A:$O; 15; FALSO)

    dessa forma, todas as linhas serão pesquisadas e você não precisa se preocupar em saber qual é a última.


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    • Marcado como Resposta Albarracim terça-feira, 7 de junho de 2011 12:41
    quarta-feira, 1 de junho de 2011 19:11
    Moderador
  • Opa, obrigado pela resposta primeiramente.

    Essa função de localizar e substituir  não é nada prático, fica mais fácil fazermos o procv na mão mesmo! Sei que o código que eu quero não é nada prático, mas uma vez feito, tornará este o mais simples trabalho do mundo...

    Quanto à modificação na fórmula do procv, parece interessante, mas pensando por outro lado, ainda é mais fácil usar a fórmula na mão ao invés de pesquisar TODAS as linhas. Uma vez essa macro funcionando, a coisa vai rodar redonda...

    Como faço para postar a planilha aqui pra você ver?

    terça-feira, 7 de junho de 2011 13:04
  • Como faço para postar a planilha aqui pra você ver?

    http://felipebenza.wordpress.com/como_disponibilizar_um_arquivo/


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br
    • Marcado como Resposta Albarracim terça-feira, 7 de junho de 2011 16:54
    terça-feira, 7 de junho de 2011 14:21
    Moderador
  • Segue link.

     

    [URL=http://www.4shared.com/document/OAzTiOY4/Backlog_20b.html]Backlog 2.0b.xls[/URL]

    terça-feira, 7 de junho de 2011 16:48