首页 > 解决方案 > Browser.document.getElementById("element_name").Value 失败

问题描述

因此,我的问题与在代码的一部分中起作用而不在另一部分中起作用的方法调用有关。

我有一些全局声明的东西,然后是 3 个潜艇。这里是全球

Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _
(ByVal hwnd As Long, ByVal nCmdShow As Long) As Long

Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWNORMAL = 2
Global Const SW_SHOWMINIMIZED = 1
Dim ie As InternetExplorerMedium

这是主体。它由 3 个 Subs 组成,一个用于登录,一个用于等待,另一个用于在您登录后访问另一个页面。一切正常,直到“barcodedailyesterday”Sub 的最后几行。在“websiteLogin”子程序中工作的完全相同的方法调用在“BarcodeDetailYesterday”子程序中不起作用。错误是“运行时错误 91:对象变量或未设置块变量”。我尝试添加额外的延迟以确保它有时间加载,我尝试过明智地做所有事情,但它每次都会在 getElementById("").Value 部分崩溃。

有没有人有任何想法?

Sub websiteLogin()

Set ie = New InternetExplorerMedium
Const Url$ = "url"
Dim Username As String, Password As String

Username = "username"
Password = "password"
'#####Open Internet Explorer and sign#####
'create IE instance & navigate to login page
ie.navigate Url
Call waitonIE
'use data from Excel file to log in
ie.document.getElementById("fm_username").Value = Username
ie.document.getElementById("fm_password").Value = Password
ie.document.forms(0).submit
End Sub

Sub waitonIE()
'####Wait on Internet Explorer to become stable before working with it####
ie.Visible = True
apiShowWindow ie.hwnd, SW_MAXIMIZE
While ie.Busy Or ie.readyState <> 4:
DoEvents:
Wend
End Sub


Sub BarcodeDetailYesterday()

'open Internet Explorer and sign in
Call websiteLogin
'navigate to page
ie.navigate "new url"
'create time/date parameters
Dim Yesterday As Date
Yesterday = Date - 1
startDate = Yesterday
startTime = "00:00:00"
endDate = Yesterday
endTime = "23:59:59"
Call waitonIE
'insert data into fields
'Application.Wait (Now + TimeValue("0:00:03"))
ie.document.getElementById("fm_date").Value = startDate
ie.document.getElementById("fm_time").Value = startTime
ie.document.getElementById("fm_date2").Value = endDate
ie.document.getElementById("fm_time2").Value = endTime

End Sub

标签: htmlexcelvba

解决方案


推荐阅读