gpt4 book ai didi

vba - 设置 iDoc = IE.Document 在 VBA 中给出运行时错误

转载 作者:行者123 更新时间:2023-12-02 16:50:47 25 4
gpt4 key购买 nike

我遇到了奇怪的问题。我使用的是 32 位版本 IE 10。最终用户使用的是 64 位版本 IE10

对我来说 set iDoc = IE.Document 在下面的代码片段中工作正常。但对于最终用户,我收到“类型不匹配错误”。

下面是我的代码:

Function Run() As Integer
Dim IE As InternetExplorer
Dim dataCount%

Set IE = GetIE

Navigate IE, "http://www.my-url-here.com/index.php"
Call Login(IE)
IE.Quit
End Function

Private Sub Login(IE As InternetExplorer)
Dim iDoc As HTMLDocument
Dim uName$, pwd$
Set iDoc = IE.Document ' here is where it gives type mismatch error

Call GetLoginDetails(jobBoard, uName, pwd)

iDoc.getElementById("login").Value = uName
iDoc.getElementById("pw").Value = pwd
iDoc.getElementsByClassName("sub_btn")(0).Click

Sync IE
End Sub

Sub Sync(IE As InternetExplorer)
Do While IE.Busy Or IE.ReadyState <> READYSTATE_COMPLETE
Application.Wait Now + TimeSerial(0, 0, 1)
Loop

Do While IE.Document.ReadyState <> "complete"
Application.Wait Now + TimeSerial(0, 0, 1)
Loop

'Debug.Print "Out: " & IE.Document.ReadyState
End Sub

Sub Navigate(IE As InternetExplorer, address$)
IE.Navigate address
Sync IE
End Sub

Function GetIE() As InternetExplorer
Set GetIE = New InternetExplorer

With GetIE
.Visible = True

.Height = 550
.Width = 800

.Left = Application.Width - .Width
End With
End Function

请注意:IE.Document.getElementById("login").Value = uName 对我们双方来说都很好。

最佳答案

尽管不特定于 IE,this MS article意味着 VBA 和 x64 系统中的底层 API 调用存在已知问题。

通过外部/自定义 API 调用,我们可以使用 PtrSafeLongPtr 声明来适应这一点。

使用后期绑定(bind),我发现它过去对我有用:

Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")

缺点是您将丢失 功能 - 但如果代码不运行,我猜 IntelliSense 并不是那么有用......

关于vba - 设置 iDoc = IE.Document 在 VBA 中给出运行时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33808763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com