VBA-如果网站已经在IE中登录,则跳过登录页面

时间:2019-12-02 19:23:10

标签: excel vba

我是StackOverflow的新手,实际上已经搜索了这个主题,但是找不到任何东西。

如果IE首次使用代码打开,则我的代码站点询问登录凭据并由我的宏填充就没有问题。但是,如果网站已经打开并登录到系统中,我的宏就会崩溃。这就是为什么如果网页中没有已知ID,我想跳过此阶段的原因。

我在此网站上看到了一个解决方案,但对我而言不起作用。这是链接。

VBA to log-in to webpage (determine if needed)

以及链接上的代码如下。

Dim myElem as Object
Set myElem = IE.document.getElementById("ctl05_TextBoxSCN")
If myElem Is Nothing Then
    'element not found
Else
    'element found
End If

我正在Set myElem = ie.document.getElementById(“ xxx”)部分遇到对象必需的错误。并且网站尚未登录。但是,如果网站已经登录,宏可以正常工作。

如果我清除上面的步骤,宏此时仅适用于新的ie页面,而如果登录另一个ie页面则无法使用。谢谢您的帮助

Public Sub MakeSelection()
    Dim ie As New InternetExplorer

    With ie
        .Visible = True
        .navigate "https://sample.com"

        While .Busy Or .readyState < 4: DoEvents: Wend
Dim myElem As Object
Set myElem = ie.document.getElementById("xxx")
If myElem Is Nothing Then
  With .document
  .getElementById("UserName").Focus
  .getElementById("UserName").Value = Sheets("LoginData").Range("B1").Text
  .getElementById("Password").Focus
  .getElementById("Password").Value = Sheets("LoginData").Range("B2").Text
  .getElementById("LoginButton").Click
  End With

  Else

1 个答案:

答案 0 :(得分:0)

我添加了是否在登录页面后打开的页面中查找单词,检查网站是否已打开或仍在询问密码和用户名的信息。

这是代码。

list1 = [[1]]
list1.append(list1[0].copy())
list1[1].append(2)