用于传递用户名和密码的VBA代码;暗语

用于传递用户名和密码的VBA代码;暗语,vba,sendkeys,Vba,Sendkeys,我正在尝试将一些数据更新到SharePoint文档中,在本地环境中尝试时,我没有遇到任何问题 但当我尝试在虚拟桌面上做同样的事情时,我做不到。我正在填充Windows警报以输入用户名和密码。我尝试过在这个场景中使用“SendKeys”,但没有意义 .... SendKeys "abc\ATX123",5 SendKeys "Password1",5 SendKeys "{ENTER}",5 .... 此代码段只是传递“ENTER”,而没有输入ID&Pwd。有谁能给我推荐一些可能的解决方案吗?首

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

但当我尝试在虚拟桌面上做同样的事情时,我做不到。我正在填充Windows警报以输入用户名和密码。我尝试过在这个场景中使用“SendKeys”,但没有意义

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

此代码段只是传递“ENTER”,而没有输入ID&Pwd。有谁能给我推荐一些可能的解决方案吗?

首先,您需要
发送键“yourString”,布尔值。据我所知,
SendKeys
命令需要一个
True
False
作为第二个输入。 您还可以尝试从一个字段到另一个字段进行“选项卡切换”:

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

如果第一个没有被编写出来,那么重点可能是userform的另一个组件。尝试“制表”以确定当用户窗体出现时,您的“用户名”文本框是否已激活。如果不是这样,您也可以尝试设置一些焦点,首先您需要
SendKeys“yourString”,Boolean
。据我所知,
SendKeys
命令需要一个
True
False
作为第二个输入。 您还可以尝试从一个字段到另一个字段进行“选项卡切换”:

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

如果第一个没有被编写出来,那么重点可能是userform的另一个组件。尝试“制表”以确定当用户窗体出现时,您的“用户名”文本框是否已激活。如果不是,你也可以试着设置一些焦点。最后,我找到了一种方法来实现这个要求,,,,有点间接,但这是我最后能找到的唯一方法

我所做的很简单——只是创建了一个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脚本-Logon.VBS的VBA代码:

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

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

我所做的很简单——只是创建了一个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脚本-Logon.VBS的VBA代码:

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

也许你必须针对正确的字段。我想输入是“全局”的,但是其他的不是。你能分享一些示例吗?也许你必须针对正确的字段。输入是“全局”我会说,但其他的不是。你能分享一些样本吗?不,在包括“真”之后,它也不起作用,,,,我已经确保当发送键传递当前对应的值时,重点是用户名文本框和密码文本框。。。实际上,登录屏幕不是任何用户窗体或任何其他类型,而是“Widows Alert”用户名和密码弹出屏幕。。。。还有其他线索吗?我很确定UserForm(或Windows Alert)在某种程度上是一个对象。你能试着调试你的代码吗?这样当表单出现时,你就可以在对象上运行搜索来找到那个表单?如果你能找到,字段“Username”和“Password”肯定会有一个名称,因此你可以对它们进行寻址。不,在包含“True”之后,它也不起作用,,,,我已经确保当sendKey传递当前对应的值时,重点放在Username文本框和Password文本框上。。。实际上,登录屏幕不是任何用户窗体或任何其他类型,而是“Widows Alert”用户名和密码弹出屏幕。。。。还有其他线索吗?我很确定UserForm(或Windows Alert)在某种程度上是一个对象。你能试着调试你的代码吗?这样当表单出现时,你就可以在对象上运行搜索来找到那个表单?如果你能找到它,“用户名”和“密码”字段肯定会有一个名字,因此你可以对它们进行寻址。+1因为现在你将接受你自己的答案,所以这个问题不再列为未回答问题+1因为现在你将接受你自己的答案,所以这个问题不再列为未回答问题