2017-10-17 22 views
0

我有一个带有字段的Word 2010模板,并且下拉列表等和一个保存按钮将文档保存在某个特定名称的某个位置。作为VBA中的网络用户名检索的文件名的一部分,文件名的另一部分是日期。这对我来说很好,但是当我试图用另一个用户测试文档时,VBA代码在下面的行中抱怨“编译错误:找不到项目或库”。在模板中引起问题的Word VBA

strUserName = (Environ$("username")) 

如果我改变了上面要像线之下,而不是和其他用户打开该模板并点击保存按钮

strUserName = "validnetworkname" 

它然后在接下来的VBA引用相同的错误抱怨这是

strDate = Date 

这里有什么不对吗?

回答

0

我用这个函数:

Private Declare Function apiGetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long 
Public Function UserName() As String 
    On Error GoTo ErrProc 

    Dim lnglen As Long 
     lnglen = 255 

    Dim strSpace As String 
     strSpace = String(254, 0) 

    Dim lngX As Long 
     lngX = apiGetUserName(strSpace, lnglen) 

    If lngX <> 0 Then GetUserName = Left(strSpace, lnglen - 1) 

Leave: 
    On Error GoTo 0 
    Exit Function 

ErrProc: 
    Resume Leave 
End Function 

要叫它:

Dim user_ As String 
    user_ = UserName 
+0

@kostats K.谢谢,但它看起来像它可能是整个VBA“引用”这就是问题所在。我所做的是我注释了strUserName =(Environ $(“username”)),并将其作为strUserName =“有效网络名称”,当另一个用户打开文档并单击保存时,它会在下一行提供相同的错误一个strDate = Date的VBA对象。我将用这些信息更新我的帖子。请有任何想法吗? – AJF

+0

似乎无法访问Visual Basic for Applications。看到这个:https://msdn.microsoft.com/en-us/library/tt6cbe57.aspx –

+0

谢谢科斯塔斯。是的,看起来像其他人使用这个不能访问任何VBA组件。我跟着链接,但我正在使用Word 2010,并不得不去文件>>选项>>信任中心。在“安全和更多”部分以及“Microsoft Word信任中心”部分中,我选择了“信任中心设置”,在宏设置中我选择了“启用所有宏”,并且选中了“信任访问VBA项目对象模型“。但结果是一样的。每个用户都必须改变他们的设置还是只有我?该模板被保存为.docm! – AJF