VBA代码传递用户名&密码

时间:2014-07-22 05:55:45

标签: vba sendkeys

我正在尝试将某些数据更新为SharePoint文档,在本地环境中尝试此操作时,我不会遇到任何问题。

但是当我尝试在虚拟桌面上做同样的事情时,我无法做到。我正在使用Windows Alert来键入用户名&密码。我尝试过在这种情况下使用“SendKeys”,但这没有用。

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

这段代码只是传递'ENTER'而没有输入ID& PWD。有人可以建议我一些可能的解决方案吗?

2 个答案:

答案 0 :(得分:4)

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

我所做的很简单 - 只创建了一个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 :(得分:0)

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

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

如果第一个没有得到写,可能重点是用户形式的另一个组件。尝试使用“tabbing”查看“Username”文本框是否在UserForm出现时激活。如果不是,你也可以尝试设置一些焦点