Ir ao conteúdo
  • Cadastre-se

Excel Erro 91 VBA - Variável de objeto ou bloco with não definido


Posts recomendados

Sub busca_id()


Dim Linha As Integer

For Linha = 2 To 501
Valor = Cells(Linha, "A")
'Range("B2:B501").ClearContents
Set ie = CreateObject("internetexplorer.application")
ie.navigate "https://na.finalfantasyxiv.com/lodestone/character/" & Valor & "/class_job/"
'ie.Visible = True

Do While ie.busy And ie.readyState <> "READYSTATE_COMPLETE"
DoEvents
Loop

Cells(Linha, 2) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(0).innertext, "-", "0"))
Cells(Linha, 3) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(1).innertext, "-", "0"))
Cells(Linha, 4) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(2).innertext, "-", "0"))
Cells(Linha, 5) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(3).innertext, "-", "0"))
Cells(Linha, 6) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(4).innertext, "-", "0"))
Cells(Linha, 7) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(5).innertext, "-", "0"))
Cells(Linha, 8) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(6).innertext, "-", "0"))
Cells(Linha, 9) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(7).innertext, "-", "0"))
Cells(Linha, 10) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(8).innertext, "-", "0"))
Cells(Linha, 11) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(9).innertext, "-", "0"))
Cells(Linha, 12) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(10).innertext, "-", "0"))
Cells(Linha, 13) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(11).innertext, "-", "0"))
Cells(Linha, 14) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(12).innertext, "-", "0"))
Cells(Linha, 15) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(13).innertext, "-", "0"))
Cells(Linha, 16) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(14).innertext, "-", "0"))
Cells(Linha, 17) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(15).innertext, "-", "0"))
Cells(Linha, 18) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(16).innertext, "-", "0"))
Cells(Linha, 19) = CInt(Replace(ie.document.getElementsByClassName("character__job__level")(17).innertext, "-", "0"))


ie.Quit
Next

End Sub

 

Esse é o código que estou trabalhando. Ele tem retornado o erro 91 algumas vezes, mas ao depurar e clicar em continuar ele funciona normalmente até o próximo erro. Alguém saberia me informar uma solução que evitasse desse erro acontecer?

Link para o comentário
Compartilhar em outros sites

@Hbergon Se anexar o arquivo vai ficar mais fácil ajudar, deve ser no conteúdo da coluna A onde sua macro busca os valores (Valor = Cells(Linha, "A")), talvez seja algum valor inválido e assim a página não carrega o endereço (se deixar Visible = True deve ver isso). Ou pode ser algum índice inválido, tente verificar o tamanho antes, p.ex: getElementsByClassName("character__job__level").Length

 

Se possível anexe um arquivo com o conteúdo da coluna A e informe em que parte e com qual Valor acontece o erro.

Link para o comentário
Compartilhar em outros sites

@Midori Pode usar esses valores para coluna A. São códigos que montam um link específico pra acessar as páginas.

 

30757592

6614752

22883906

29180869

32084458

31383272

30685957

35791668

38416203

12035569

31225174

36079020

17448839

31339268

34131549

14532896

36759370

37122382

34050768

23925835

34483402

6888229

37051050

38779888

37060863

30428369

7980595

29317094

30955919

33565041

36885911

35310282

31381584

29162641

37709862

 

Link para o comentário
Compartilhar em outros sites

Em 17/09/2021 às 11:24, Hbergon disse:
ie.readyState <> "READYSTATE_COMPLETE"

Reparei agora que nessa parte você está comparando ReadyState com uma string quando devia ser um inteiro de valor 4. Veja se corrigindo isso resolve,

 

https://docs.microsoft.com/en-us/previous-versions/bb268229(v=vs.85)

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.