ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 445|回复: 4

[求助] vba在onedrive文件夹中无法运行

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-3-6 23:04 | 显示全部楼层 |阅读模式
如下图所,在onedrive中运行程序会显示错误,文件位置是个网络的啥。把程序弄到本地运行就没问题。

有没有解决的办法,让程序可以在onedrive中运行。感谢大佬。
4e9f28e132ac3580cbe7495b92e219b.png
beb141a7cd24e8513c5655285290fdf.png

TA的精华主题

TA的得分主题

发表于 2024-3-7 12:03 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

发表于 2024-3-8 21:28 | 显示全部楼层
分享一个我在SharePoint、OneDrive网址中遍历文件的方法。
原理是在此电脑中右键【添加一个网络位置】将SharePoint、OneDrive网址添加为一个网絡驱动器(我的网絡驱动器经常会失效,所以我每次运行时用VBA添加)。
例如我的网址:https://xxxxx-my.sharepoint.com/personal/xxxxx_com/Documents添加为Y盘(任意一个电脑没有使用过的盘都可以)

你的网址:https://d.docs.live.net/ee2e5b8d3162ab18/工作/其他公司/化工/客户资料/chemicalbook

其中https://d.docs.live.net/ee2e5b8d3162ab18添加为Y盘(可以理解为选择一个路径做根目录)
filepath = Y:/工作/其他公司/化工/客户资料/chemicalbook(自动化的话可以用替换函数将网址路径前部分替换成盘符)

f=Dir(filepath & “*.xlsx*) '这个方法Dir不知道可不可以,我一般用FileSystemObject来遍历。
  1. Sub CreateNetwork_OneDrive() '新建网絡驅動器
  2. Set objNetwork = CreateObject("WScript.Network"): Set FSO = CreateObject("Scripting.FilesyStemObject")
  3. S$ = "Y:"  '自定義驅動器名称
  4. 'P$ = "https://xxxxx.sharepoint.com/sites/display_xxxxx/Common_Service/21"  'SharePoint网址
  5. P$ = "https://xxxxx-my.sharepoint.com/personal/xxxxx_com/Documents"  'OneDrive网址
  6. If FSO.DriveExists(S) Then               '驅動器存在時
  7. If FSO.GetDrive(S).IsReady Then         '驅動器准備好時
  8. Exit Sub                               '退出程序
  9. Else
  10. objNetwork.RemoveNetworkDrive (S)      '移除驅動器
  11. End If
  12. End If
  13. Set objFd = Application.FileDialog(msoFileDialogFolderPicker)
  14. objFd.InitialFileName = P
  15. objNetwork.MapNetworkDrive S, P, False  '添加共享网絡驅動器
  16. Set objNetwork = Nothing: Set FSO = Nothing
  17. End Sub

  18. Sub LuJing()
  19. CreateNetwork_SPO
  20. Set fs = CreateObject("Scripting.FileSystemObject")
  21. Path = "Y:"
  22. Set oF = fs.GetFolder(Path)
  23. For Each R In oF.Files

  24. Next R
  25. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-7-6 18:38 | 显示全部楼层
同样问题,困扰了很久。
我的情况:台机Office2013没有登陆微软账号,笔记本电脑Office2016家庭版有登陆微软账号,都用onedrive同步文件。
台机用函数cell、VBA的Path获取onedrive内表格路径没问题,都是本地硬盘的路径,笔记本电脑就不行,获取的路径都是带https://d.docs.live.net的网址,导致笔记本电脑上没法正常运行onedrive内的表格,也试过退出Office2016的微软账号,还是照旧,每次笔记本电脑都要把onedrive内的表格单独拷贝出来,弄好后再拷贝回去。
也曾想用VBA代码解决问题,但总觉得应该没这么麻烦,微软应该有解决方法。昨天搞到今天,终于找到方法,知乎https://www.zhihu.com/question/267923524/answer/2371199572
文件-选项-常规-隐私设置,关闭“开启所有连接体验”

TA的精华主题

TA的得分主题

发表于 2024-7-6 19:26 | 显示全部楼层
或者:文件-帐户-管理设置,关闭“开启所有连接体验”
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-18 00:23 , Processed in 0.026949 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表