【问题标题】:VBA code to pass username & password用于传递用户名和密码的 VBA 代码
【发布时间】:2023-03-24 00:03:01
【问题描述】:

我正在尝试将一些数据更新到 SharePoint 文档中,并且在本地环境中尝试此操作时我没有遇到任何问题。

但是当我尝试在虚拟桌面上做同样的事情时,我做不到。我正在填充 Windows 警报以键入用户名和密码。我已经尝试在这种情况下使用“SendKeys”,但这没有意义。

....
SendKeys "abc\ATX123",5
SendKeys "Password1",5
SendKeys "{ENTER}",5
....

这个 sn-p 只是通过“ENTER”而不输入 ID 和密码。谁能给我一些可能的解决方案,好吗?

【问题讨论】:

  • 也许您必须定位正确的字段。我会说 Enter 是“全球性的”,但其他人不是
  • 你能分享一些样品吗?

标签: vba sendkeys


【解决方案1】:

最后,我找到了一种方法来实现这个要求,,,,,有点间接,但这是我最后能找到的唯一方法。

我所做的很简单 - 只是创建了一个 Windows 脚本文件“Logon.vbs”来处理该弹出屏幕并在 VBA 中调用 vbs。

如果您正在寻找类似的内容,请参阅下面的示例:

Windows 脚本:

'Creating an script object
Set oWSH = WScript.CreateObject("WScript.Shell")

'Activating alert screen    
oWSH.AppActivate ("Windows Security")

'Passing the value UserName/UserID
oWSH.SendKeys "USERNAME"     'ensure to complete the username with apropriate domain e.g., abc/A123456

'Changing the focus to password textbox
oWSH.SendKeys "{TAB}"

'Passing the value password
oWSH.SendKeys "PASSWORD"

'Clicking enter to complete the screen
oWSH.SendKeys "{ENTER}"

'Releasing the script object
 Set oWSH = Nothing

调用 VBS 脚本的 VBA 代码 - Logon.vbs:

Shell "WScript C:\Users\ABC\Desktop\Logon.vbs", vbNormalFocus

【讨论】:

  • +1 因为现在您将接受自己的答案,拜托,所以这个问题不再列为未回答
【解决方案2】:

首先你要SendKeys "yourString", Boolean。据我所知,SendKeys 命令需要True 或False 作为第二个输入。 您也可以尝试从一个字段“切换”到另一个字段:

SendKeys "abc\ATX123", True
SendKeys "{TAB}", True
SendKeys "Password1", True
SendKeys "{ENTER}", True

如果第一个没有写出来,可能焦点在用户表单的另一个组件上。尝试“tabbing”以查看您的“Username”文本框是否在 UserForm 出现时被激活。如果不是,您也可以尝试设置一些焦点

【讨论】:

  • 不,在包含'True'之后它也没有工作,,,,并且我确保当SendKeys传递当前值时,焦点在用户名文本框和密码文本框上......实际上登录屏幕不是任何用户窗体或任何其他类型,它是“寡妇警报”用户名和密码弹出屏幕......请问还有其他线索吗?
  • 我很确定 UserForm(或 Windows Alert)在某种程度上是一个对象。您能否尝试调试您的代码,以便当该表单出现时您对对象运行搜索以找到那个?如果你能找到它,“用户名”和“密码”字段肯定会有名字,因此你可以找到它们。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 2011-06-19
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多