因此,我在新的Excel工作簿中将IE自动迁移到SharePoint上的.click
'导出到Excel'(为了安全,我们的组织已禁用Visual Basic for SharePoint)。
我使用.SendKeys
与第一个消息框进行交互,并使用了一些讨厌的设置来关闭数据连接安全警告。
只留下导入数据表单来处理:
当我尝试使用.SendKeys
来模仿Return或Spacebar时,按键发生在其他地方,无论是在开发人员打开时我的代码还是其他应用程序中都没有。
我试图选择Sheet1,就像我手动执行此操作一样,表单会获得焦点。
任何想法如何自动控制此表单或强制它获得焦点以使.SendKeys
起作用?
为清楚起见,这是我的完整代码:
Sub export()
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
.EnableEvents = False
End With
Dim IE As Object
Set IE = Nothing
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "SITE CANNOT BE DISCLOSED"
Do Until (IE.readystate = 4 And Not IE.Busy)
DoEvents
Loop
Dim list
Set list = IE.Document.getElementById("Ribbon.List-Title").getElementsByTagName("a")(0)
list.Click
'list.FireEvent ("onclick") alternative
Do Until (IE.readystate = 4 And Not IE.Busy)
DoEvents
Loop
Dim export
Set export = IE.Document.getElementById("Ribbon.List.Actions.ExportToSpreadsheet-Large")
export.Click
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys "%{O}" 'works up to here need to make focus change before next keypress
Workbooks("Reporting Macro").Sheets("Sheet1").Select
Application.Wait (Now + TimeValue("00:00:01"))
Application.SendKeys " "
End Sub
答案 0 :(得分:0)
我什至不需要宏.isy下载/导入,我可以简单地刷新数据连接作为宏的一部分。
ActiveWorkbook.RefreshAll