【发布时间】:2025-12-20 15:50:10
【问题描述】:
我正在尝试添加一些代码来弹出一个用户表单,允许最终用户输入他们特定网站的登录名/密码。这段代码Passing variable from Form to Module in VBA 让我更接近我的目标,但我不确定如何让它按我需要的方式工作。这是我的用户表单的代码。
Private Sub CommandButton1_Click()
UPass = UserForm1.UserID
Unload UserForm1
End Sub
Private Sub CommandButton1_Click()
UID = UserForm1.WavePassword
Unload UserForm1
End Sub
我正在使用以下代码登录网站。
Public Sub Connect_To_Wave()
Dim Dasboard As Worksheet
Set Dashboard = ActiveWorkbook.Worksheets("Dashboard")
Dim UID As String
UID = driver.findElementByName("PASSWORD").SendKeys UID
Dim UPass As String
UPass = driver.findElementByName("PASSWORD").SendKeys Upass
Set ie = CreateObject("InternetExplorer.Application")
my_url = "url of website - not a variable"
With ie
.Visible = True
.Navigate my_url
.Top = 100
.Left = 530
.Height = 700
.Width = 400
Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop
End With
ie.Document.getElementById("txtLoginUsername").Value = ""
ie.Document.getElementById("txtLoginPassword").Value = ""
ie.Document.getElementById("txtLoginUsername").Value = UID
ie.Document.getElementById("txtLoginPassword").Value = UPass
ie.Document.getElementById("btnLogin").Click
Do Until Not ie.Busy And ie.readyState = 4
DoEvents
Loop
End Sub
我遇到的问题是我在 uid/upass 变量上收到“预期语句结束”错误。如何正确让用户表单将输入直接传递给变量,以便变量可用于登录网站?如果有更好的方法,我完全愿意改变方法。
【问题讨论】:
-
我什至还没到运行任何一组代码的地步。当我完成输入 UID = / UPass = 行时,它们都变成了红色并标记了错误。
-
过程
CommandButton1_Click定义了两次。那无法编译。Connect_To_Wave()也应该是ConnectToWave(ByVal uid As String, ByVal pwd As String)- 你没有显示表单的实例化位置,但它分配全局变量和卸载表单的全局/默认实例并不是可靠代码的标志。 -
我按照建议进行了这些更改。我不知道如何从这里测试它。我按 F8 运行用户表单,我认为它按预期运行,但我不确定如何同时测试登录代码。当我现在尝试 F8 登录代码时,它只是叮当,但没有提供错误消息。
-
@TonyP 如果代码现在可以运行,那么您可以将其提交给Code Review。
-
@MacroMan 我不确定它是否有效。由于某种原因它不允许我运行它?