excel - VBA - 从 Excel 文件中获取 URL 以供 IE 浏览
问题描述
到目前为止,我的这段代码是从一个较旧的代码中引用的,它从 excel 中获取数据并将其放入 SAP 中。
我希望做的是让 VBA 获取 excel 中的链接,以便 IE 在执行特定任务后在单个窗口中导航。
Sub accounts()
Dim ie As Object
Set ie = CreateObject("internetexplorer.application")
'ShowWindow ie.hwnd, SW_SHOWMAXIMIZED
ie.Visible = True
'Create objects to application, workbook and sheets
Set xclapp = CreateObject("Excel.Application")
Set xclwbk = ActiveWorkbook
Set xclsht = xclwbk.Sheets("accounts")
'Line Reference
line_index = 2
link = ""
'Loop line
Label1:
While Sheets("accounts").Cells(line_index, 1).Value <> ""
'Get websites from Excel
link = xclwbk.Sheets("accounts").Cells(line_index, 1).Value
'Open link
ie.Navigate link
While ie.ReadyState <> 4 Or ie.Busy
DoEvents
Wend
line_index = line_index + 1 'Loop
Application.Wait (Now + TimeValue("0:00:3")) 'wait
Wend
End Sub
它现在正在从 excel 打开网站,但在第二行之后导航失败。有什么想法吗?
我仍在尝试学习 VBA,任何帮助将不胜感激。谢谢!
解决方案
您在帖子中的代码不会/不应该工作。我认为您没有使用 VBA,可能是 SAP 中的 VBS?(这不应该是一个问题)如果您的代码示例是您的实际子的缩短版本,最好将整个内容作为您的代码包含在内,因为它可能会使您更容易理解您的问题。
无论如何,浏览器打开并且没有任何反应。
在您的行.navigate "Trim(Link)"
中,实际上并没有传递经过修剪的链接版本。您正在传递文字文本“trim(link)”
下面的示例将导航到存储在 range 中的 URLSheet1!A1:A10
导航命令下方的代码会在页面完全加载时暂停脚本,然后再继续。
Sub Main()
Dim Browser As Object
Dim Sheet As Worksheet
Dim Row As Integer
Dim Link As String
Set Browser = CreateObject("InternetExplorer.Application")
Set Sheet = ThisWorkbook.Worksheets("Sheet1")
Browser.Visible = True
For Index = 1 To 10
Link = Sheet.Cells(Row, 1)
Browser.Naviage Trim(Link)
While Browser.ReadyState <> 4 Or Browser.Busy
DoEvents
Wend
Next Index
End Sub
更新
这只是您上面代码的副本,添加对 Internet 控件的引用不会解决您的问题,但可以访问 IDE 中的智能型数据(代码完成、方法名称等)可以帮助调试。
您尝试单击的页面,您能否提供链接以查看您要单击的内容?
当我运行下面的代码时,它将导航到工作表上的所有链接,我也添加了一些行来调试它的过程。
如果您在 Excel 中,则无需创建默认提供的 excel 对象。
' Add Reference to "Microsoft Internet Controls" (Tools->References)
Sub AccountsTest()
Dim IE As New InternetExplorer
IE.Visible = True
Dim Sheet As Worksheet
Set Sheet = ThisWorkbook.Worksheets("accounts")
Dim Row As Integer
Dim Link As String
Row = 2
Debug.Print "Starting Processing Links"
While Sheet.Cells(Row, 1).Value <> ""
Link = Sheet.Cells(Row, 1).Value2 ' here
Debug.Print "Navigating to <" & Link & ">"
IE.Navigate Link
While IE.ReadyState <> 4 Or IE.Busy
DoEvents
Wend
Debug.Print "Navigation Complete"
Application.Wait (Now + TimeValue("0:00:03"))
Row = Row + 1
Wend
Debug.Print "No More Links - End"
IE.Quit
Set IE = Nothing
End Sub
推荐阅读
- java - 我们如何在间隔后创建和删除文件?
- html - 堆叠时,Bootstrap 使左列位于下方
- css - 调整 mat-form-field 输入字段的宽度
- tsql - 如何从 SQL Server 的 CDC 表中获取用户?
- c++ - 如何在函数内部的同一行上打印,避免刷新
- docker - Docker 构建失败并出现“找不到秘密 pip:未找到”错误
- javascript - 如何在每个表格单元格中选择多个输入值进行复制和粘贴?
- firebase - Firebase signInWithCustomToken 自定义声明仅在模拟器中不起作用
- angular - 在角度网页中,当我尝试从下拉菜单和下拉菜单中选择选项并单击它时,期望页面未加载
- websocket - 为什么消息内容 JSON 在 pubsub 中编码?