【问题标题】:Save files to OneDrive using Access VBA使用 Access VBA 将文件保存到 OneDrive
【发布时间】:2018-01-10 08:53:47
【问题描述】:

我们的系统正在转向云存储,因此我们的个人驱动器很快就会消失,因此我需要将应用程序保存到用户 OneDrives。

这对我来说是一个新领域,我在网上阅读的内容没有多大意义。

这是我目前所拥有的:

Set FileSystemObject = CreateObject("Scripting.FileSystemObject")
Dim FileExistsbol As Boolean
Dim stFileName As String
Dim CopyFrom As String
Dim CopyTo As String

stFileName = "C:\Users\" & Environ("UserName") & "\OneDrive - Company"
stFileName = Trim(stFileName)
FileExistsbol = dir(stFileName) <> vbNullString

If FileExistsbol Then
 Kill stFileName
 CopyFrom = "C:\Test File.txt"
 CopyTo = "C:\Users\" & Environ("UserName") & "\OneDrive - Company"
 FileSystemObject.CopyFile CopyFrom, CopyTo
Else
 CopyFrom = "C:\Test File.txt"
 CopyTo = "C:\Users\" & Environ("UserName") & "\OneDrive - Company"
 FileSystemObject.CopyFile CopyFrom, CopyTo
End If

此代码以前用于复制到本地驱动器,但相信它在这种情况下不起作用,因为它试图复制到的新驱动器是基于网络的。

错误: 实际上没有填充错误

感谢任何帮助

【问题讨论】:

  • 也许您可以映射 OneDrive 文件夹,使其充当本地驱动器。
  • 使用 VBA 可以做到吗?否则会有很多融合器必须手动完成
  • 应该可以,是的。确切的方法取决于您的 Windows 版本等,但可能最简单的方法是 [通过 Google 搜索] 如何通过命令提示符将驱动器号映射到 OneDrive,然后使用 Shell 执行如果/必要时发出命令。
  • 我想你的答案就在这里:stackoverflow.com/a/42840430/78522如果你能得到UNC(这是一个HTTPS地址)就不需要映射

标签: ms-access vba ms-access-2010


【解决方案1】:

请注意,您的变量 stFileName 包含目录路径而不是文件名,因此 kill 表达式针对的是目录。


但是,与其测试和删除文件,不如为CopyFile 方法使用overwrite 参数,例如:

Dim objFSO As New FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\Test File.txt", "C:\Users\" & Environ("UserName") & "\OneDrive - Company", True
Set objFSO = Nothing

您需要在项目中添加对 Microsoft Scripting Runtime 的引用,以使我的示例中的 objFSO 变量能够使用早期绑定来定义。

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多