programadorvb6 Posted October 13, 2013 at 09:29 AM Report #528724 Posted October 13, 2013 at 09:29 AM (edited) Olá bom dia. Fiz este código , mas deparei-me com o problema do ciclo : [ For Each i As mshtml.IHTMLElement In DocElements ] ; o DocElements , não "tolera" que seja vazio ou que não existam (Elementos). Fiz assim para fazer a filtragem, mas continuo com o mesmo problema. Como pode ser solucionado? Public Sub Faz_Tarefa() Dim DocElements As mshtml.IHTMLElementCollection = Nothing If Not IsNothing(DocElements) Then ' Fiz aqui a filtragem For Each i As mshtml.IHTMLElement In DocElements Dim Name_Attrib As String = i.getAttribute("name") Dim id_Attrib As String = i.getAttribute("id") If Name_Attrib = Me.TextBox6.Text AndAlso id_Attrib = Me.TextBox5.Text Then i.setAttribute("value", Me.TextBox12.Text) End If Next i End If End Sub Grato desde já pela vossa atenção Edited October 13, 2013 at 09:36 AM by programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
ribeiro55 Posted October 14, 2013 at 10:42 AM Report #528860 Posted October 14, 2013 at 10:42 AM (edited) É uma collection. Não deverá ser Nothing se preenchida devidamente. Nos casos sem elementos está provavelmente vazia. O "filtro" teria de ser algo como If DocElements.Count=0 Then Presumo que Dim DocElements As mshtml.IHTMLElementCollection = Nothing seja por motivos de ornamentação aqui para o forum. Isto porque não te vejo a preencher o DocElements em lado nenhum. Edited October 14, 2013 at 10:42 AM by ribeiro55 Sérgio Ribeiro "Great coders aren't born. They're compiled and released""Expert coders do not need a keyboard. They just throw magnets at the RAM chips"
programadorvb6 Posted October 15, 2013 at 02:14 AM Author Report #528980 Posted October 15, 2013 at 02:14 AM (edited) Olá Ribeiro. Fiz assim o código , mas como posso fazer para que os elementos não sejam vazios ou nulos , visto pertencerem a : mshtml.IHTMLElementCollection ? Public Sub Motor_Login() Dim User_Pointer As Boolean Dim Pass_Pointer As Boolean Dim objIE As New SHDocVw.InternetExplorer Dim htmlDoc As New mshtml.HTMLDocument Dim DocElements As mshtml.IHTMLElementCollection = Nothing Me.WindowState = FormWindowState.Minimized ShowWindow(objIE.HWND, ShowWindowCommands.SW_MAXIMIZE) '====================================================== If Not ObjFuncoes.Testa_Link(Me.TextBox5.Text) Then MessageBox.Show("Link requerido sem ligação. ", "Informação :", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End If objIE.Navigate(Me.TextBox5.Text) objIE.Visible = True '====================================================== While objIE.ReadyState <> WebBrowserReadyState.Complete End While '====================================================== With objIE Try htmlDoc = .Document DocElements = htmlDoc.getElementsByTagName("input") If Not IsNothing(DocElements) Then For Each i As mshtml.IHTMLElement In DocElements Dim Name_Attrib As String = i.getAttribute("name") Dim id_Attrib As String = i.getAttribute("id") '================================== If Not String.IsNullOrEmpty(Me.DadosATrib_Utiliz.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Utiliz.Text) Then If Name_Attrib.Equals(Me.DadosATrib_Utiliz.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Utiliz.Text) Then i.setAttribute("value", Me.TextBox3.Text) User_Pointer = True End If End If If Not String.IsNullOrEmpty(Me.DadosATrib_Utiliz.Text) AndAlso String.IsNullOrEmpty(Me.DadosCla_Utiliz.Text) Then If Name_Attrib.Equals(Me.DadosATrib_Utiliz.Text) AndAlso Name_Attrib.Equals(Me.DadosATrib_Utiliz.Text) Then i.setAttribute("value", Me.TextBox3.Text) User_Pointer = True End If End If If String.IsNullOrEmpty(Me.DadosATrib_Utiliz.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Utiliz.Text) Then If id_Attrib.Equals(Me.DadosCla_Utiliz.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Utiliz.Text) Then i.setAttribute("value", Me.TextBox3.Text) User_Pointer = True End If End If '===================== ' PASSWORD '===================== If Not String.IsNullOrEmpty(Me.DadosATrib_Pass.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Pass.Text) Then If Name_Attrib.Equals(Me.DadosATrib_Pass.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Pass.Text) Then i.setAttribute("value", Me.TextBox4.Text) Pass_Pointer = True End If End If If Not String.IsNullOrEmpty(Me.DadosATrib_Pass.Text) AndAlso String.IsNullOrEmpty(Me.DadosCla_Pass.Text) Then If Name_Attrib.Equals(Me.DadosATrib_Pass.Text) AndAlso Name_Attrib.Equals(Me.DadosATrib_Pass.Text) Then i.setAttribute("value", Me.TextBox4.Text) Pass_Pointer = True End If End If If String.IsNullOrEmpty(Me.DadosATrib_Pass.Text) AndAlso Not String.IsNullOrEmpty(Me.DadosCla_Pass.Text) Then If id_Attrib.Equals(Me.DadosCla_Pass.Text) AndAlso id_Attrib.Equals(Me.DadosCla_Pass.Text) Then i.setAttribute("value", Me.TextBox4.Text) Pass_Pointer = True End If End If '====== Next i End If '=== [ conclusão: ] If User_Pointer = True AndAlso Pass_Pointer = True Then MsgBox("Ambos os valores encontrados") ElseIf User_Pointer = False AndAlso Pass_Pointer = False Then MsgBox("Método Copy / Paste.") Exit Sub Else MsgBox("Prima um botão para aceitar os dados.") Exit Sub End If User_Pointer = False Pass_Pointer = False Catch ex As Exception MessageBox.Show("Ocorreu um erro inesperado ao enviar dados .", "Informação :", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Exit Sub End Try End With End Sub[/Code] Edited October 15, 2013 at 02:17 AM by programadorvb6 ______________________________________________________________________________ Que minha coragem seja maior que meu medo e que minha força seja tão grande quanto minha fé.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now