Seu endereço de e-mail não será publicado. Os campos obrigatórios estão marcados *
Desculpe - não pensei em como o código ficaria no comentário enviado. Exclua se desejar e eu voltarei a postar em um formato melhor.
Quanto aos comentários sobre o VBA ser arcaico, achei realmente útil. Isso me permitiu transformar um processo de uma semana em minha equipe em um processo de 10 minutos. Isso me permitiu reduzir a maioria das atividades que minha equipe realiza automatizando quase tudo.
Conseguiu aplicar validações do AD, extrair dados de vários bancos de dados de sistemas operacionais e reduzir todas as consultas SQL traquinas, depois cortar e colar.
Foi alterado um trabalho que exigia várias consultas, gerando manualmente vários emails em um único clique no botão.
Eu absolutamente amo isso, arcaico ou não.
Encontrei algo nesse sentido há algum tempo e desenvolvi um aplicativo baseado em Excel que me permitia rastrear o número de "Curtidas" em um conjunto de páginas especificadas do Facebook. Desde então, estendi o uso do VBA para obter todo tipo de informação em vários sites.
Meu problema no momento é que estou tendo problemas com o IE e tendem a usar o Chrome.
Como traduzo o tipo de código que você tem acima para que ele faça a mesma coisa, mas usando o Chrome como navegador. Posso usar um comando do Shell para abrir o navegador Chrome e acessar um URL específico, mas não consigo descobrir como extrair informações dessa página.
Como exemplo, meu código do Facebook é:
Sub GetLikes () Dim IeApp como InternetExplorerDim sURL como StringDim IeDoc como ObjectDim i como Longdebugmode = False Se o modo de depuração for aberto "c: VBAoutputvbaOutput.txt "Para acrescentar como nº 1 'Criar nova instância do IE Set IeApp = New InternetExplorer' Torná-lo visível - algumas coisas não funcionam a menos é IeApp visível. Visible = debugmode For Each mc In Selection'define a página para abrir sURL = mc 'Encontre a coluna chkDate = Date Set c = Range ("2: 2"). (chkDate) Se c não for nada, então myCol = Range ("2: 2"). Find (what: = "*", searchdirection: = xlAnterior) .Column + 1 Cells (1, myCol) = Células "Status" (1, myCol + 1) = Células "Likes" (1, myCol + 2) = Células "Links" (2, myCol) = Células chkDate (2, myCol + 1) = Células chkDate (2, myCol + 2) = chkDate Else myCol = c. Fim da coluna Se 'mc. Deslocamento (0, 1) .Valor = Data isDown = mc. Deslocamento (0, 3) .Value If isDown = "Page Down" Então pageDown = "Page Down" numlikes = "" numlinks = "" doNothing = True Else '' navegue até a página IeApp. Navegue sURL 'Pause a macro usando um loop até que a página esteja totalmente carregada. Faça loop até o IeApp. ReadyState = READYSTATE_COMPLETE 'armazena o objeto Document Set IeDoc = IeApp. Document On Error Resume Next codes = IeDoc. Body.innertext Se Err. Number 0 Then Err. Limpar GoTo skiploop End If On Error GoTo 0 Se debugmode, em seguida, escreva # 1, codes & vbCrLf & vbCrLf numlinks = IeDoc. Links. Comprimento a = IeApp. Depuração do LocationName '. Imprimir códigos pageDown = True isPageStats = InStr (códigos, "placePageStatsNumber") isGroup = InStr (códigos, "uiButtonText> Join") isOldGroup = InStr (códigos, "Este grupo está programado para ser arquivado ") isOpenGroup = InStr (códigos," Abrir grupo ") isEvent = InStr (códigos," Evento público ") isClosedGroup = InStr (códigos," Grupo fechado ") IsOpen = InStr (códigos, a) isCommonInterest = InStr (códigos, "Interesse comum") isMovie = InStr (códigos, "Movieu003c") isNumberGiant = InStr (códigos, "uiNumberGiant") notFound = InStr (códigos, "A página solicitada não foi encontrada") profileUnavailable = InStr (a, "Perfil indisponível") titlePos = InStr (códigos, "") If titlePos> 0 Então titlePos2 = InStr (titlePos, códigos, "") If titlePos> 0 Então titleName = Mid (códigos, titlePos + 7, titlePos2 - titlePos - 7) Se isPageStats> 0 Então isPageStats = isPageStats + 23 pos2 = InStr (isPageStats, codes, "") pageDown = "Current" likeTxt = Mid (códigos, isPageStats, pos2 - isPageStats) ElseIf isGroup> 0 Então likeTxt = "n.k." pageDown = "Grupo" ElseIf isOldGroup> 0 Então likeTxt = "n.k." pageDown = "Grupo Antigo" ElseIf isOpenGroup> 0 Pos1 = InStr (isOpenGroup, codes, "Members (") + 9 pos2 = InStr (pos1, codes, ")") numMembers = Mid (códigos, pos1, pos2 - pos1) pageDown = "Abrir grupo" likeTxt = LTrim ( numMembers) ElseIf isEvent> 0 Então pos1 = InStr (1, códigos, "Central de Ajuda") pos2 = InStr (pos1 + 1, códigos, "Ver tudo") + 9 pos3 = InStr (pos2, códigos, "Atendendo") - 1 Se pos3 = -1 Então pos1 = InStr (códigos, "pagelet_event_guests_going") + 28 pos2 = InStr (pos1, códigos, "> Indo (") + 8 pos3 = InStr (pos2, códigos, ")") numAttending = Mid (códigos, pos2, pos3 - pos2) Outro numAttending = Mid (códigos, pos2, pos3 - pos2) 'pos2 - pos1) Fim Se likeTxt = LTrim (numAttending) pageDown = "Evento" ElseIf isClosedGroup> 0 Então pageDown = "Grupo fechado" pos1 = InStr (isClosedGroup, códigos, "Membros") + 9 pos2 = InStr (pos1, códigos, ")") likeTxt = Mid (códigos, pos1, pos2 - pos1) ElseIf isNumberGiant> 0 Então pos2 = InStr (isNumberGiant, códigos, ">") pos3 = InStr (pos2, códigos, "") likeTxt = Médio (códigos, pos2 + 1, pos3 - pos2 - 1) pageDown = "Atual" ElseIf isCommonInterest> 0 Então pageDown = "Interesse comum" likeTxt = "n.k." ElseIf IsOpen> 0 E um "Facebook" Então pageDown = "Atual" likeTxt = "n.k." ElseIf isMovie> 0 Então pageDown = "Filme" likeTxt = "n.k." End If If pageDown = True Então pageDown = "Page Down" likeTxt = "n.a." numlinks = "n.a." Fim Se Fim Se mc. Deslocamento (0, myCol - 2) .Value = pageDown mc. Deslocamento (0, myCol - 1) .Value = likeTxt mc. Deslocamento (0, myCol - 0) = numlinksskiploop: pageDown = "" likeTxt = "" numlinks = "" Próximo mc'Clean IeApp. Sair do conjunto IeApp = Nothing se o modo de depuração e fechar # 1 End Sub
É desajeitado, mas faz o trabalho.
Acho que tudo o que estou procurando é como extrair .Body.innertext de uma instância do Google Chrome.
Como Jeff disse, não para substituir o seu navegador, mas para utilizá-lo para uma aplicação específica. Eu usei esse método duas vezes.
Eu pertenço a um clube de hobby local, mas você também deve ser um membro do clube nacional. Eu costumava usar uma consulta na Web do Excel para percorrer nossa associação (por número de identificação nacional do membro) e verificar se os membros foram pagos na organização nacional. Mas, alguns anos atrás, a organização nacional mudou a maneira como o site é executado e a consulta na web não funcionava mais. Mas esse método ainda me permite percorrer rapidamente a associação e verificar visualmente a associação nacional. (Incorporei o navegador em um formulário do Excel que exibe simultaneamente as informações de associados do clube local.)
Na semana passada, no trabalho, precisávamos realizar uma auditoria de precisão nas informações contidas em cerca de 10.000 imagens; comparando as informações capturadas na imagem com as informações relacionadas em nosso banco de dados e garantindo a correspondência. Então, eu precisava de um meio para os usuários olharem rapidamente para uma imagem, digitarem algumas informações contidas na imagem e repetirem isso repetidamente 10.000 vezes. Colocamos as imagens em um servidor da Web e eu usei esse método para puxar a imagem para uma janela do navegador em um formulário de entrada de dados do Excel. Os usuários verão a imagem, digitarão as informações necessárias no formulário de entrada de dados, pressionarão a tecla Enter e serão instantaneamente levados para a próxima imagem para revisão.
Para aplicativos como eu descrevi acima, é bastante útil. Provavelmente, nunca vou demorar para me tornar proficiente em qualquer linguagem de programação 'mais séria', mas posso gravar macros e percorrer o VBA o suficiente. A auditoria de precisão levou menos de um dia para desenvolver, testar e implementar completamente. Não precisei extrair recursos de desenvolvedor de suas tarefas atribuídas (e duvido seriamente que algum de nossos desenvolvedores de Java ou PL-SQL possa ter feito isso mais rapidamente do que usando vanilla Excel e VBA.