【问题标题】:Word VBA causing issues in templateWord VBA 导致模板出现问题
【发布时间】:2017-10-17 13:40:35
【问题描述】:

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

strUserName = (Environ$("username"))

如果我将上面的内容改为下面的行,而另一个用户打开模板并单击保存按钮

strUserName = "validnetworkname"

然后它在下一个 VBA 引用时抱怨同样的错误

strDate = Date

请问这里有什么问题?

【问题讨论】:

    标签: vba ms-word


    【解决方案1】:

    我使用这个功能:

    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
    

    【讨论】:

    • @kostats K. 谢谢,但看起来问题可能是整个 VBA“参考”。我所做的是我注释掉了 strUserName = (Environ$("username")) 并将其设为 strUserName = "valid network name" 并且当另一个用户打开文档并单击保存时,它在引用的下一行给出了相同的错误一个 VBA 对象,它是 strDate = Date。我将使用此信息更新我的帖子。请问有什么想法吗?
    • 似乎无法访问 Visual Basic for Applications。看到这个:msdn.microsoft.com/en-us/library/tt6cbe57.aspx
    • 感谢科斯塔斯。是的,使用它的任何其他人似乎都无法访问任何 VBA 组件。我点击了链接,但我使用的是 Word 2010,必须转到文件 >> 选项 >> 信任中心。这里“安全及更多”部分下没有选项,在“Microsoft Word 信任中心”部分中我选择了“信任中心设置”,在宏设置中我选择了“启用所有宏”并选中“信任访问VBA 项目对象模型”。但结果是一样的。每个用户都必须更改他们的设置还是只有我?模板保存为 .docm!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-07
    • 2012-11-01
    相关资源
    最近更新 更多