如何使用vba将Excel电子表格范围内容推送到URL中的特定表单?

时间:2013-06-18 20:31:17

标签: excel vba

好吧,就VBscript而言,我几乎都是菜鸟,所以提前谢谢,请和我一起来。我一直在研究许多不同的论坛,YouTubing就像疯了一样,并且找到了我怀疑接近的东西,但是我无法获得我想要的预期效果。我相信我知道实施特定程序所需的步骤,但我正在寻求任何愿意伸出援手的人的帮助。

意图(为什么这对您也有用):

我负责为许多不同的房地产物业安排现场访问(对我的老板)。每个属性都有不同的潜在客户联系,定期更改。我一直在努力创建一个电子表格:

  • 密切关注每个客户所在的计划流程中的哪个步骤, 在任何给定的时间
  • 提供直观的平台,以保持最新的联系 每个客户在被要求安排预约时的信息,会议时间和杂项说明
  • 连接和颜色代码(在Google地图中通过BatchGeo.com)数据 从前两个要点到地图上的属性。

如何使用的案例 通过在地图上可视化这些数据,并创建组(由不同颜色的谷歌地图引脚表示),可以直观地查看地图并安排在彼此接近的地点连续预约“一石二鸟”。 “

如何手动完成此过程:

我想自动导航到以前创建的网址(编辑地图链接),复制和播放将给定单元格范围内的所有单元格(IE.A1:E10)粘贴到具有“编辑地图链接”的特定表单,然后单击更新按钮。此外,所有导航都应在Excel中完成(无需打开单独的浏览器)。

// Batch Geo“edt map”链接

// http://batchgeo.com/map/edit/?map_id=2874687&d=0aa639559d0883376a15e66afdc042b0
//网站源代码printscreen http://printscreen.me/snaps/d906d04b89b98d54b4bfa6fd174e911cd08e8a1f

代码草案

Private Sub CommandButton1_Click()

    WebBrowser2.Navigate2 ActiveSheet.Range("C15").Value

    WebBrowser2.Document.getElementById("edit_form").Range.("B3:I7").Value

End Sub

1 个答案:

答案 0 :(得分:0)

假设IWebBrowser2像IE一样工作,这应该可以解决问题。我已经使用IE测试了这个,因为我对此更熟悉,但我认为它应该是相同的。

注意:您的范围B3中的第一行:I7需要包含标题(姓名,电话号码等),否则系统会提示您验证地址,这将更容易确保您的工作表格式正确,以便发送到表单。

Option Explicit
Sub LogMeIn()
'Requires reference to Microsoft HTML Object Library
Dim ie As InternetExplorer
Dim htmlDoc As HTMLDocument
Dim el As HTMLFormElement
Dim pasteValues As String
Dim vals As Range
Dim r As Long
Dim c As Long

'## Store the values in a delimited string
Set vals = Range("B3:I7")
For r = 1 To vals.Rows.Count
    For c = 1 To vals.Columns.Count
        If Not c = 1 Then
            pasteValues = pasteValues & vbTab & vals(r, c)
        Else:
            pasteValues = pasteValues & vbNewLine & vals(r, c)
        End If

    Next
Next

'## Create an instance of IE (alternatively you can probably use WebBrowser2)
Set ie = New InternetExplorer

'## So you can see what's happening/debug. delete the next line if you want.
ie.Visible = True

'## Navigate to the URL:
ie.Navigate "http://batchgeo.com/map/edit/?map_id=2874687&d=0aa639559d0883376a15e66afdc042b0"

'## Make sure the page has finished loading
Do Until ie.ReadyState = 4
    DoEvents
Loop

'## Set our Document variable
Set htmlDoc = ie.Document

'## Set the element variable
Set el = htmlDoc.getElementById("sourceData")

'## Send the values to the form
el.innerText = pasteValues
'## I use this to confirm I have grabbed the correct element, you can delete or comment it out.
MsgBox "The form now contains the following data, although it may not be visible:" & _
        vbNewLine & vbNewLine & _
        pasteValues

'## Update the map
htmlDoc.getElementById("mapnow_button").Click

'## Cleanup
Set ie = Nothing
End Sub