Olá amigos, sábios, jedis, magos e mestres do VBA e outros colaboradores.
Criei uma macro que, através de uma variável, realiza uma importação dos dados de uma página web da intranet do meu trabalho. Tudo funciona bem, mas somente após eu fazer uma acesso à página pelo próprio Excel.
Nesta pasta tenho duas planilhas: a "DadosImportados" que é uma planilha vazia, para importação dos dados; e a planilha "ROTEIRO" que é preenchida com os dados importados.
Quando eu abro a planilha, se eu clicar imediatamente no botão de importação, me ocorre o "Erro de tempo em execução '91' A variavel do objeto ou a variavel do bloco with não foi definida". Fazendo o debug passo-a-passo com F8 percebi que os dados não estão sendo importados.
Depois de alguns testes descobri que a macro só funciona corretamente após ir na planilha "DadosImportados" e clicar com o direito do mouse, escolher a opção "Editar consulta". Feito isso abre o navegador do excel e não preciso esperar a página carregar, apenas clico no botão "Cancelar". Após fazer isso a macro funciona corretamente.
Gostaria de utilizar a pasta sem precisar ter que ir em "Editar Consulta". É como se fizesse necessário acessar a página antes para a consulta funcionar.
Sub ImportaDadosS400()
'
' Macro para importação de dados do S400
'
'Declaração das variáveis
Dim sicad As String
Dim nome As String
Dim cpf As String
Dim agencia As String
Dim status As String
Dim val_cad As String
Dim val_cad_date As Date
Dim porte As String
Dim segmento As String
Dim atividade As String
Dim renda As String
Dim renda_num As Currency
Dim logradouro As String
Dim bairro As String
Dim cidade As String
Dim cep As String
Dim endereco As String
Dim filiacao As String
Dim naturalidade As String
Dim dt_nascimento As String
Dim identidade As String
Dim org_expedidor As String
Dim dt_emissao As String
Dim estado_civil As String
Dim p As LongPtr
Dim i As LongPtr
If sicad = "" Then
MsgBox "Favor preencher o sicad apenas com números." & Chr(10) & "" & Chr(10) & " Clique em OK", vbOKOnly, "SICAD NÃO PREENCHIDO"
Sheets("ROTEIRO").Select
Range("SICAD1").Select
Exit Sub
Else
MsgBox "O processo de busca dura entre 10 e 40 segundos." & Chr(10) & "" & Chr(10) & " Clique em OK", vbOKCancel, "FIQUE TRANQUILO"
Pergunta
laertvalois
Olá amigos, sábios, jedis, magos e mestres do VBA e outros colaboradores.
Criei uma macro que, através de uma variável, realiza uma importação dos dados de uma página web da intranet do meu trabalho. Tudo funciona bem, mas somente após eu fazer uma acesso à página pelo próprio Excel.
Nesta pasta tenho duas planilhas: a "DadosImportados" que é uma planilha vazia, para importação dos dados; e a planilha "ROTEIRO" que é preenchida com os dados importados.
Quando eu abro a planilha, se eu clicar imediatamente no botão de importação, me ocorre o "Erro de tempo em execução '91' A variavel do objeto ou a variavel do bloco with não foi definida". Fazendo o debug passo-a-passo com F8 percebi que os dados não estão sendo importados.
Depois de alguns testes descobri que a macro só funciona corretamente após ir na planilha "DadosImportados" e clicar com o direito do mouse, escolher a opção "Editar consulta". Feito isso abre o navegador do excel e não preciso esperar a página carregar, apenas clico no botão "Cancelar". Após fazer isso a macro funciona corretamente.
Gostaria de utilizar a pasta sem precisar ter que ir em "Editar Consulta". É como se fizesse necessário acessar a página antes para a consulta funcionar.
Sub ImportaDadosS400()
'
' Macro para importação de dados do S400
'
'Declaração das variáveis
Dim sicad As String
Dim nome As String
Dim cpf As String
Dim agencia As String
Dim status As String
Dim val_cad As String
Dim val_cad_date As Date
Dim porte As String
Dim segmento As String
Dim atividade As String
Dim renda As String
Dim renda_num As Currency
Dim logradouro As String
Dim bairro As String
Dim cidade As String
Dim cep As String
Dim endereco As String
Dim filiacao As String
Dim naturalidade As String
Dim dt_nascimento As String
Dim identidade As String
Dim org_expedidor As String
Dim dt_emissao As String
Dim estado_civil As String
Dim p As LongPtr
Dim i As LongPtr
Application.ScreenUpdating = False
sicad = Sheets("ROTEIRO").Range("SICAD1").Value
Sheets("DadosImportados").Select
If sicad = "" Then
MsgBox "Favor preencher o sicad apenas com números." & Chr(10) & "" & Chr(10) & " Clique em OK", vbOKOnly, "SICAD NÃO PREENCHIDO"
Sheets("ROTEIRO").Select
Range("SICAD1").Select
Exit Sub
Else
MsgBox "O processo de busca dura entre 10 e 40 segundos." & Chr(10) & "" & Chr(10) & " Clique em OK", vbOKCancel, "FIQUE TRANQUILO"
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://d001mfp1/S400-CCClientes/faces/_rlvid.jsp?_rap=pc_ConsultarCadastrosLista.doRowAction1Action&_rvip=/consultarCadastros.jsp&codigoClienteParam=" & sicad _
, Destination:=Range("$A$1"))
.Name = "cadastro" & sicad
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = """tabelaFiltroSecao"""
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
Sheets("DadosImportados").Select
Cells.Find(What:="Nome", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
nome = ActiveCell.Value
Cells.Find(What:="CPF", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
cpf = ActiveCell.Value
Cells.Find(What:="Agência Responsável", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
agencia = ActiveCell.Value
Cells.Find(What:="Situação de Cadastro", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
status = ActiveCell.Value
Cells.Find(What:="Próxima Renovação", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
val_cad = ActiveCell.Value
Cells.Find(What:="Porte", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
porte = ActiveCell.Value
Cells.Find(What:="Segmento", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
segmento = ActiveCell.Value
Cells.Find(What:="Atividade Principal", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
atividade = ActiveCell.Value
Cells.Find(What:="Renda Bruta Mensal", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
renda = ActiveCell.Value
Cells.Find(What:="ENDEREÇO RESIDENCIAL", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
ActiveCell.Offset(1, 0).Select
logradouro = ActiveCell.Value
ActiveCell.Offset(1, 0).Select
bairro = ActiveCell.Value
Cells.Find(What:="cidade", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
cidade = ActiveCell.Value
Cells.Find(What:="CEP", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
cep = ActiveCell.Value
Cells.Find(What:="Filiação", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
filiacao = ActiveCell.Value
Cells.Find(What:="Natural de", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
naturalidade = ActiveCell.Value
Cells.Find(What:="Data de Nascimento", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
dt_nascimento = ActiveCell.Value
Cells.Find(What:="Identidade", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
identidade = ActiveCell.Value
Cells.Find(What:="Órgão Emissor", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
org_expedidor = ActiveCell.Value
Cells.Find(What:="Data de Emissão", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
dt_emissao = ActiveCell.Value
Cells.Find(What:="Estado Civil", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
estado_civil = ActiveCell.Value
nome = Replace(nome, "Nome: ", "")
cpf = Replace(cpf, "CPF: ", "")
agencia = Replace(agencia, "Agência Responsável: ", "")
agencia = Left(agencia, 3)
status = Replace(status, "Situação de Cadastro: ", "")
val_cad = Replace(val_cad, "Próxima Renovação: ", "")
val_cad_date = val_cad
porte = Replace(porte, "Porte: ", "")
segmento = Replace(segmento, "Segmento: ", "")
atividade = Replace(atividade, "Atividade Principal: ", "")
renda = Replace(renda, "Renda Bruta Mensal: R$ ", "")
renda_num = renda
logradouro = Replace(logradouro, "Logradouro: ", "")
bairro = Replace(bairro, "Bairro: ", "")
cidade = Replace(cidade, "Cidade: ", "")
endereco = logradouro & ", " & bairro & ", " & cidade & ", " & cep
filiacao = Replace(filiacao, "Filiação: ", "")
naturalidade = Replace(naturalidade, "Natural de: ", "")
dt_nascimento = Replace(dt_nascimento, "Data de Nascimento: ", "")
identidade = Replace(identidade, "Identidade: ", "")
org_expedidor = Replace(org_expedidor, "Órgão Emissor: ", "")
dt_emissao = Replace(dt_emissao, "Data de Emissão: ", "")
estado_civil = Replace(estado_civil, "Estado Civil: ", "")
Sheets("ROTEIRO").Select
Sheets("ROTEIRO").Range("NOME").Value = nome
Sheets("ROTEIRO").Range("CPFNOME").Value = cpf
Sheets("ROTEIRO").Range("AGENCIA1").Value = agencia
Sheets("ROTEIRO").Range("STATUS_CADASTRO1").Value = status
Sheets("ROTEIRO").Range("VALIDADE_CADASTRO1").Value = val_cad_date
Sheets("ROTEIRO").Range("PORTE1").Value = porte
Sheets("ROTEIRO").Range("SEGMENTO1").Value = segmento
Sheets("ROTEIRO").Range("ATIVIDADE1").Value = atividade
Sheets("ROTEIRO").Range("RENDA1").Value = renda_num
Sheets("ROTEIRO").Range("ENDERECO1").Value = endereco
Sheets("ROTEIRO").Range("FILIACAO1").Value = filiacao
Sheets("ROTEIRO").Range("NATURALIDADE1").Value = naturalidade
Sheets("ROTEIRO").Range("DT_NASCIMENTO1").Value = dt_nascimento
Sheets("ROTEIRO").Range("IDENTIDADE1").Value = identidade
Sheets("ROTEIRO").Range("ORG_EMISSOR1").Value = org_expedidor
Sheets("ROTEIRO").Range("DT_EMISSAO1").Value = dt_emissao
Sheets("ROTEIRO").Range("EST_CIVIL1").Value = estado_civil
'Sheets("DadosImportados").Range("b26").Value = DateValue(data)
Sheets("DadosImportados").Select
Cells.Select
Selection.ClearContents
'Call Excluiplanilha
End If
MsgBox "Dados importados com sucesso!" & Chr(10) & "" & Chr(10) & " Clique em OK e verifique os dados.", vbOKOnly, "Importação concluída"
Application.ScreenUpdating = True
Sheets("ROTEIRO").Select
Range("STATUS_CADASTRO").Select
End Sub
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.