嗨我正在尝试从网页导入数据http://www.investing.com/indices/us-spx-500-futures-historical-data 我想要做的是导航到此网页并从中选择不同日期范围的宏日历。使用VBA将数组传递给网页中的脚本函数以及从脚本函数传递数组
我不明白如何在日历中设置日期。我可以打开它,但我不能够“复制”鼠标点击选择日期 我公司开发了代码,现在是:
Sub Problem()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.application")
IE.Visible = True
IE.navigate "http://www.investing.com/indices/us-30-historical-data"
'
PauseTime = 4 ' Set duration to wait in seconds.
Start = Timer ' Set start time.
Do ' While Timer < Start + PauseTime
DoEvents ' allow other processes to work (the browser to have time to load the webpage)
Loop Until IE.ReadyState = READYSTATE_COMPLETE Or Timer > Start + PauseTime
IE.Document.getElementByID("datePickerIconWrap").Click
'
End Sub
我看了这个页面,我的源代码发现两个有趣的功能,在DatePickerGetDate和DatePickerSetDate 我试图同时运行脚本,以使用
IE.Document.parentWindow.execScript "widgetHolCalendar.DatePickerGetDate", "javascript"
IE.Document.parentWindow.execScript "widgetHolCalendar.DatePickerSetDate", "javascript"
没有错误消息是由代码中给出,但没有被改变,我不知道该代码是真执行某事。如果我理解正确的密码,设置新的日期我要叫DatePickerSetDate以2个参数
DatePickerSetDate(date, shifTo)
其中日期是2个元素的数组和shifTO是一个布尔值。我不知道如何使用vba将数组传递给这个脚本。
此外,当我调用函数DatePickerGetDate我希望得到的结果,并保存在VBA阵列
谁能帮助?
如果时许了解你的权利,你要不要建立一个IE插件使用VBA?那么,在你的问题钩过点击很简单:只需在当前重点标签(这应该是你刚刚打开的页面)注入JavaScript代码。我想用IE.Document.parentWindow.execScript你可以插入JS代码到当前标签。您还划分为内容脚本和后台脚本(在这种情况下为您的VBA应用程序)。我认为你应该更多地了解如何开发浏览器附加组件。 – alpham8
抱歉alpham8,我不确定明白。我想要做的是在Excel中使用宏来更改该页面日历中的日期。我不想开发一个附加组件。至于在execScript中使用JS代码,你能举一个简单的例子来说明如何做这样的事情吗? – MeSS83
哦,对不起,误解了你。如果您处于浏览器扩展上下文中,则只能在JS中使用execScript函数。在过去,我也使用MS Office的VBA开发宏。我从来没有听说过使用VBA代码中隐含的JavaScript的方法。我认为你在混合两个不同的东西。如果你在这个页面上找到了JS代码,这与Excel VBA宏代码没有关系......你的意思是什么日历?就像从传入的输入数据中绘制图表一样,在Excel中抛出一个向导? – alpham8