创建一个宏,从excel中的单元格复制到浏览器中的文本框,然后单击“添加”

时间:2012-03-09 10:09:52

标签: excel excel-vba vba

我已经使用第三方应用程序创建了一个宏,它可以在80%的时间内完成我想要的任务。问题是我不能让它继续运行,因为它有时会出错,或者浏览器需要更长的时间才能响应。

我想知道我是否可以在excel(VBA)附带的宏管理器中创建我想要的内容。

我想:

  1. 从A1复制,转到浏览器,粘贴在文本框1(大约一半的页面)
  2. 返回excel,从B1复制,转到浏览器,粘贴在文本框2
  3. 点击浏览器中显示“添加”的按钮
  4. 等待弹出框(javascript警告)消失
  5. 冲洗并重复X次,这次是从A2和B2。
  6. 你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

user1242345,有两种方法可以解决。

方式1

您可以从VBA在WebBrowser1中启动URL,然后使用.GetElementByID直接写入文本框

例如

WebBrowser1.Document.getElementById("TextBoxName").Value = "Whatever"

方式2

使用XMLHTTP。这比Way 1快得多

如果您可以分享链接,那么我可以给您一个确切的答案吗?

<强>后续

  
    
      

感谢您的回复..我无法给您链接,因为它是受密码保护的页面。但是,如果这有帮助,这里是我要粘贴的表单的html。 pastebin.com/cWrwfKBf - user1242345 17分钟前

             

两者,我想从单元格A1复制并粘贴到Feed_name,然后返回到Excel并从B1复制,并粘贴到feed_url。谢谢你的帮助,我真的很感激。 - user1242345 5分钟前

    
  

我将源代码复制到文本文件中并将其保存为我的桌面上的Test.Htm。请参阅下面的示例,了解如何写入第一个文本框。我相信你可以为下一个复制它;)

要运行此操作,请在Excel中创建用户窗体并将WebBrowser1控件和CommandButton控件放在窗体中。请参见快照。

SNAPSHOT 1

enter image description here

将此代码粘贴到用户窗体的代码区域中。

Private Sub CommandButton1_Click()
    Dim url As String

    url = "C:\Documents and Settings\Siddharth Rout\Desktop\Test.Htm"

    WebBrowser1.Navigate url
    WaitForWBReady

    WebBrowser1.Document.getElementById("feed-create-feed_name").Value = "Whatever"
End Sub

Private Sub Wait(ByVal nSec As Long)
    nSec = nSec + Timer
    While Timer < nSec
        DoEvents
    Wend
End Sub

Private Sub WaitForWBReady()
    Wait 1
    While WebBrowser1.ReadyState <> 4
        Wait 3
    Wend
End Sub

当您点击按钮时,文本会自动填充,如下图所示。

SNAPSHOT 2

enter image description here

更多关注

  
    
      

不幸的是这是我第一次使用VB,所以我没能创建这个循环.. :( - user1242345 2分钟

    
  

我通常不会在这种情况下发布解决方案,但建议 Asker 学习VBA但是因为我已经发布了一个主要的块,所以我将为你完成它。 但是,此时此问题还需要您自己编写的代码:)

<强> UNTESTED

试试这个

Private Declare PtrSafe Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long) 

Private Sub CommandButton1_Click()
    Dim ws As Worksheet
    Dim url As String
    Dim lastRow As Long

    url = "C:\Documents and Settings\Siddharth Rout\Desktop\Test.Htm"

    '~~> This is the sheet where the values has to be picked up from
    Set ws = Sheets("Sheet1") 

    With ws
        '~~> Get the Last Row in Sheet1
        lastRow = .Range("A" & .Rows.Count).End(xlUp).Row

        '~~> Loop through the range
        For i = 1 To lastRow
            '~~> Navigate to the URL
            WebBrowser1.Navigate url
            WaitForWBReady

            '~~> Input Values
            WebBrowser1.Document.getElementById("feed-create-feed_name").Value = .Range("A" & i).Value
            WebBrowser1.Document.getElementById("feed-create-feed_url").Value = .Range("B" & i).Value

            '~~> Click Button
            WebBrowser1.Document.getElementsByTagname("Input")(3).Click

            WaitForWBReady
        Next
    End With
End Sub

Private Sub Wait(ByVal nSec As Long)
    nSec = nSec + Timer
    While Timer < nSec
        DoEvents
        Sleep 100
    Wend
End Sub

Private Sub WaitForWBReady()
    Wait 1
    While WebBrowser1.ReadyState <> 4
        Wait 3
    Wend
End Sub

HTH

西特