Vba “具有特殊字符的对象”/&引用;在GetObject中生成自动错误

Vba “具有特殊字符的对象”/&引用;在GetObject中生成自动错误,vba,ms-access,active-directory,Vba,Ms Access,Active Directory,我们有一个旧的Microsoft Access字体端,用作用户数据库的GUI。我从来都不是一个VBA的人,所以在修复bug的过程中,我一直在学习 我们的Access DB有许多将信息同步到Active Directory的命令。其中一个命令是将用户添加到组中。但是,每当组包含/时,就不会添加该组 调试产生如下结果: 运行时错误-2147463168(80005000)“自动错误” 打印出targetgroup会按我的预期显示DN。在GetObject出现问题并导致其自身的身份验证错误之前,尝试转

我们有一个旧的Microsoft Access字体端,用作用户数据库的GUI。我从来都不是一个VBA的人,所以在修复bug的过程中,我一直在学习

我们的Access DB有许多将信息同步到Active Directory的命令。其中一个命令是将用户添加到组中。但是,每当组包含
/
时,就不会添加该组

调试产生如下结果:

运行时错误-2147463168(80005000)“自动错误”

打印出targetgroup会按我的预期显示DN。在GetObject出现问题并导致其自身的身份验证错误之前,尝试转义
/

下面是函数的顶部-

Function AddGroup(TargetGroup, strUserID, Optional strOptReqBy)
    Dim objDL
    Set objUser = GetObject("LDAP://" & GetDName(CStr(strUserID)))

        Set objDL = GetObject("LDAP://" & TargetGroup)
        On Error Resume Next
        objDL.Add (objUser.ADsPath)
        objDL.SetInfo
        On Error GoTo 0
如果组中不包含
/

调试指向
Set objDL=GetObject(“LDAP://”和TargetGroup)


正在查找有关发生这种情况的原因的一些输入。谢谢!

在LDAP路径中,
/
是一个分隔符。不仅在开头附近使用了
/
,而且还可以指定要连接的服务器,后跟
/
,然后是对象的DN,如下所示:

LDAP://example.com/DC=example,DC=com
如果您运行此操作的计算机未加入到与您连接到的域不同的域(或受信任的域),则这是必需的

因此,这意味着,如果要绑定到的对象的DN有一个
/
,它会认为
/
之前的所有内容都是要连接的服务器,并且会爆炸

因此,您只需要逃避它,正如您已经了解的,这是通过
\
完成的:

LDAP://OU=This\/That,DC=example,DC=com
是的,一个简单的替换就可以了:

Set objUser=GetObject(“LDAP://”和Replace(GetDName(CStr(strUserID)),“/”,“\/”)

别难过。即使是微软。

你是如何试图逃离
/
?@TimWilliams你知道,现在看着它,我想我完全是在放屁。我是在和Chr(34)一起逃跑基于我找到的其他东西。你的链接太棒了。明天我要试试这个,现在我要看看我是否能找到一个比使用REPLACE()更好的方法,在逃离目标群时能够更新我们的群添加和删除。谢谢我的兄弟!