【问题标题】:How to build a variable filepath as link or path in MS ACCESS using VBA如何使用 VBA 在 MS ACCESS 中构建变量文件路径作为链接或路径
【发布时间】:2021-09-13 22:13:25
【问题描述】:

我在 MS ACCESS 中遇到以下问题:

使用 VBA,PDF 文件存储在 OneDrive 文件夹中并与 Sharepoint 同步。众所周知,OneDrive 在所有计算机上都以相同的方式声明为另一种驱动器。

保存后,文件位于computer01文件夹中:

C:\Users\User01\OneDrive - AllFolders\SharedFolder\AllDocs\Doc01.pdf =>( \USER01 )

现在,computer02 上的 user02 也连接到该文件夹​​,他想通过 VBA 打开文件。相应的共享表字段中文件的路径为:

C:\Users\User01\OneDrive - AllFolders\SharedFolder\AllDocs\Doc01.pdf

当然User02不能通过VBA打开文件,因为路径应该是:

C:\Users\User02\OneDrive - AllFolders\SharedFolder\AllDocs\Doc01.pdf =>( \USER02 )

例如我尝试使用这样的路径来保存文件(这不是正确的语法!):

(Environ("USERPROFILE")) & "\OneDrive - AllFolders\SharedFolder\AllDocs\Doc01.pdf

但是 (Environ("USERPROFILE")) as table.field.value 当然理解为字符串而不是变量!

如何解决这个问题?谢谢!

我的代码:

Option Compare Database
Option Explicit

Public OneDriveDirectory As String

Public Function SetPathToOneDrive() As String
    
SetPathToOneDrive = (Environ("USERPROFILE")) & "\OneDrive - AllFolders\SharedFolder\AllDocs\"

End Function

Sub SaveDoc()

Dim xSource As String, xDestination As String, xFilename As String    
Dim FSO As Object
Dim db As DAO.Database
Dim rs As DAO.Recordset

OneDriveDirectory = SetPathToOneDrive

xFilename = "Doc01.pdf"
xSource = (Environ("USERPROFILE")) & "\" & xFilename
xDestination = OneDriveDirectory & xFilename

Set db = CurrentDb
Set rs = db.OpenRecordset("tblDocLinks", dbOpenDynaset)

Set FSO = VBA.CreateObject("Scripting.FileSystemObject")

Call FSO.CopyFile(xSource, xDestination)

   With rs
     .AddNew
     .Fields("fldDocPath") = xDestination
     .Update
   End With

rs.close
db.close
    
End Sub

【问题讨论】:

  • 也许可以试试%UserProfile%\OneDrive - All Folders\SharedFolder\AllDocs\Doc01.pdfsuperuser.com/questions/217504/…
  • 我收到错误 SetPathToOneDrive = %UserProfile% & "OneDrive - All Folders\SharedFolder\AllDocs"SetPathToOneDrive = %UserProfile%\OneDrive - All Folders \SharedFolder\AllDocs" (RED VBA LINE)

标签: vba ms-access hyperlink path onedrive


【解决方案1】:

SetPathToOneDrive = Environ$("%UserProfile%") & "\OneDrive - All Folders\SharedFolder\AllDocs\"

你应该得到正确的路径。

您确定路径正确吗?默认值类似于 C:\Users\username\OneDrive\...

根据环境,在数据库中存储绝对文件路径可能不是一个好主意。我倾向于只保存文件名并在 VBA 中一起构建路径,通常使用从配置表或文件中获取的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多