2017-10-17 23 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