【问题标题】:UserProfile environ on vbavba 上的 UserProfile 环境
【发布时间】:2017-06-24 19:43:24
【问题描述】:

首先我是 vba 编码的新手。我在 Access 2013 - VBA 中编写了一个表单,并创建了一个在单击按钮时生成 PDF/txt 文档的函数,事情是老板希望它保存在位于 %userprofile% 路径上的共享文件夹中 - 比如 C:\Users\<username>\folder而且我们有很多用户。

如何添加到我正在使用的 SaveAs2 的路径中,而不必对每个用户进行硬编码?

代码如下:

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

我尝试定义如下代码:

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

然后:

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

但还是没有成功。

感谢您的帮助

【问题讨论】:

  • filepath 的值是多少?当您尝试使用它时会发生什么?
  • 如果这是 MS Word,那么 saveas2 是方法而不是属性,因此请去掉等号:file.saveas2 filepath &"\folder\filename.pdf"
  • 我编辑了这个问题,但它是filepath = Environ("USERPROFILE")
  • 即使设置了变量,也没有文件保存到目标文件夹
  • “没有成功”到底是什么意思?你有错误吗?它是否保存到错误的位置?如果不知道您在包含的代码中遇到的确切问题,这有点难以回答。

标签: vba ms-access environ


【解决方案1】:

听起来您正在尝试返回登录用户的用户名?

添加一个模块,插入这段代码:

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

如果你想返回网络用户,试试这样:

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

如果您想返回“我的文档”文件夹,您可以使用与上面尝试类似的方法。这被包装在一个函数中。

Public Function MyDocsPath() As String

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

End Function

然后调用它。

filepath = MyDocsPath & \filename.pdf")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-11
    • 1970-01-01
    • 2010-10-30
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多