使用VBA将字符串从UserForm传递到网站字段

时间:2017-02-02 13:59:36

标签: vba excel-vba internet-explorer excel

我不熟悉使用VBA进行网络互动。

我有一个UserForm(" FrmResults"),带有一个文本框(" TxtSql")。我正在尝试使用VBA打开一个网站,并将文本框中的文本粘贴到此网站上的文本区域。

到目前为止,我有以下代码,但这总是在最后一段启动调试器,即我试图设置textarea的值 - 即使我只是使用" test"用于检测。我也尝试使用.InnerHtml代替.Value,但这也失败了。

它在打开网站后总是停止,因此无法从剪贴板粘贴复制的文本。

有人可以告诉我这里做错了什么或错过了吗?

我的代码:

    Dim IE As Object
    Dim MyURL As String
    Dim varResults As New DataObject

    varResults.SetText TxtSql.Text
    varResults.PutInClipboard

    Set IE = CreateObject("InternetExplorer.Application")
    MyURL = "myURL"

    IE.Navigate MyURL
    IE.Visible = True

    While IE.busy
    DoEvents

    Wend

    With IE.Document
        .getElementById("Oracle_profile_sql").Value = varResults
'        .all("mapnow_button").Click
    End With

2 个答案:

答案 0 :(得分:0)

取决于您尝试访问的网站。 例如,元素可以是数组。这是有用的东西:

Option Explicit
Public Sub TestMe()

    Dim IE          As Object
    Dim MyURL       As String
    Dim varResults  As New DataObject
    Dim el          As Object

    Set IE = CreateObject("InternetExplorer.Application")
    MyURL = "http://www.stackoverflow.com"

    IE.Navigate MyURL
    IE.Visible = True

    While IE.busy
        Application.Wait (Now + TimeValue("0:00:2"))
    Wend


    Set el = IE.Document.getElementById("search")(0)
    el.value = "TEST"

End Sub

答案 1 :(得分:0)

以下代码将打开" Google.com" (对于我的测试),并将来自" TextSql" &{34;搜索"中的TextBox(来自User_Form) " Google"的文本栏网站。

在您的情况下,请使用以下行:     .getElementById("Oracle_profile_sql").Value = varResults.GetText(1)

<强>代码

Private Sub CommandButton1_Click()

    Dim IE As Object
    Dim MyURL As String
    Dim varResults As New DataObject

    varResults.SetText TxtSql.Text
    varResults.PutInClipboard

    Set IE = CreateObject("InternetExplorer.Application")

    ' tested with the "Search" in Google
    MyURL = "https://www.google.de/?gfe_rd=cr&ei=pj2TWLrWFYTN8gf0uIaIBw&gws_rd=ssl" ' "myURL"

    IE.Navigate MyURL
    IE.Visible = True

    While IE.busy
        DoEvents
    Wend

    With IE.Document
        .getElementById("lst-ib").Value = varResults.GetText(1)
    End With

End Sub