UserProfile environ on vba

回眸只為那壹抹淺笑 提交于 2020-03-27 04:52:40

问题


First I'm new to vba coding . I wrote a form in Access 2013 - VBA and created a function that generates a PDF/txt document on button click, thing is that boss wants it to save on a shared folder that´s located on %userprofile% path - like C:\Users\<username>\folder and we have a lot of users.

How can I add to the path of the SaveAs2 that i´m using without having to hardcode to each user?

Code is like:

file.SaveAs2 = ("C:\Users\username\folder\filename.pdf")

I tried defining code like:

Dim filepath as string 
filepath = environ("USERPROFILE")

and then:

file.saveas2 = (filepath &"\folder\filename.pdf") 

but still no success.

Thanks for any help


回答1:


Sounds like you're trying to return the username of the logged in user?

Add a module, insert this code:

Option Compare Database

Declare Function wu_GetUserName Lib "advapi32" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

Function NetworkUser() As String

Dim lngStringLength As Long
Dim sString As String * 255

lngStringLength = Len(sString)
sString = String$(lngStringLength, 0)

If wu_GetUserName(sString, lngStringLength) Then
NetworkUser = Left$(sString, InStr(sString, Chr(0)) - 1)

Else
NetworkUser = "Unknown"
End If

End Function

Then if you want to return the network user, try something like this:

filepath =  = "C:\Users\" & networkuser() & "\folder\filename.pdf"

If you want to return the 'My Documents' folder, you could use something similar to what you were attempting above. This is wrapped in a function.

Public Function MyDocsPath() As String

     MyDocsPath = Environ$("USERPROFILE") & "\My Documents"

End Function

Then call it.

filepath = MyDocsPath & \filename.pdf")


来源:https://stackoverflow.com/questions/42091960/userprofile-environ-on-vba

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!