使用VBA IE Automation从pinkoi.com发送消息

时间:2017-01-04 19:01:27

标签: vba web

原谅我的英语。使用Internet Explorer的VBA Automation,我想从pinkoi.com发送消息。

现在我可以显示发送消息表单,但我不知道如何输入主题和正文并选择文件并发送。

the send form photo

Sub test()
Dim ie As Object 'SHDocVw.InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
Call login(ie) 'just for login
Call show_the_form(ie) 'My problem in here
End Sub
Sub login(ie)
ie.Visible = True
ie.Navigate "https://www.pinkoi.com/user/testpkko"
Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop


Dim anchorTags As Object 'MSHTML.IHTMLElementCollection
Set anchorTags = ie.document.GetElementsByTagName("A")

Dim oAnchorLoop As Object 'MSHTML.IHTMLAnchorElement
For Each oAnchorLoop In anchorTags
    Dim anchorText As String
    anchorText = oAnchorLoop.Text
    If anchorText = ChrW(20659) & ChrW(36865) & ChrW(35338) & ChrW(24687) Then
        Dim oAnchorLogon As Object 'MSHTML.IHTMLAnchorElement2
        Set oAnchorLogon = oAnchorLoop
        oAnchorLogon.Click
        Exit For
    End If
Next

Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop
'* so now logon form should be visible

On Error Resume Next
Dim oUserNameInput As Object 'MSHTML.IHTMLInputElement
Set oUserNameInput = ie.document.getElementById("n-login-id")
nowtime = Timer
Do While ie.Busy Or ie.readyState <> 4 Or oUserNameInput Is Nothing
    DoEvents
    If Timer - nowtime > 1 Then Exit Do 'Already logoin
    Set oUserNameInput = ie.document.getElementById("n-login-id")
Loop

oUserNameInput.Value = "testpkko"

Dim oUserPassword As Object 'MSHTML.IHTMLInputElement
Set oUserPassword = ie.document.getElementById("n-login-password")

oUserPassword.Value = "abc123"


Dim oListElement As Object 'MSHTML.HTMLLIElement
Set oListElement = oUserNameInput.parentElement

Dim oUnorderedList As Object 'MSHTML.IHTMLUListElement
Set oUnorderedList = oListElement.parentElement

Dim oForm As Object 'MSHTML.IHTMLFormElement
Set oForm = oUnorderedList.parentElement

Dim oSubmitInputElememt As Object 'MSHTML.HTMLInputElement
Set oSubmitInputElememt = Nothing

Dim lFormChildrenLoop As Long
For lFormChildrenLoop = 1 To oForm.all.Length

If oForm.elements.Item(lFormChildrenLoop).Type = "submit" Then
    Set oSubmitInputElememt = oForm.elements.Item(lFormChildrenLoop)
    Exit For

End If

Next lFormChildrenLoop
If Not oSubmitInputElememt Is Nothing Then
    'Stop '* get ready .....
    oSubmitInputElememt.Click
    Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop
End If
End Sub
Sub show_the_form(ie)
Application.Wait Now + TimeValue("00:00:03")

ie.Navigate "https://en.pinkoi.com/user/testpkko2" 'After login we can trip to other people website
Do While ie.Busy Or ie.readyState <> 4: DoEvents: Loop
With ie.document
On Error Resume Next
For Each E In .GetElementsByTagName("A")
    a = E.Text
    If CStr(a) = "Message" Then
        E.Click 'After Click I want to send a message
        'how can I input Subject and body and select file to upload?
        'And I want to learn how to do this , Very thanks.
    End If
Next
End With
End Sub

2 个答案:

答案 0 :(得分:0)

抱歉,我们对你投了反对,试试看。如果我们单击您指定的锚点,但我需要使用Unicode字符逻辑。其余的只是导航DOM。我已将默认用户名和密码设为&#34; hello&#34;和&#34;世界&#34;。

var contar = 0; //counter value
var pausa = false;

function passar(){ //function that changes the image
    $("#"+contar).click(function(){ 
        $(".img").attr('src', 'imagens/'+contar+'.jpg'); //the image is from 1.jpg to 4.jpg
        $("#"+contar).addClass('active');
        console.log(contar);
    });
}

setInterval(function(){ //setinterval to use the function "passar" to change image
    contar++;
        if(contar<=4) { //my limit of images on the html
            passar(contar);
            console.log(contar);
        }else{
            contar = 0;
        };
}, 2000);

答案 1 :(得分:0)

我知道如何输入主题和正文并发送文件

ie.document.all("title").Value = "subject"
ie.document.all("description").Value = "Body"
For Each e In ie.document.GetElementsByTagName("INPUT")
    a = e.Type
    If CStr(a) = "submit" Then e.Click
Next

但是点击选择文件后,它将没有响应,程序将停止 有没有人可以使用vba来选择文件?

ie.document.all("file").Click