You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA:如何将Worksheets对象设为OneDrive文件中的工作表?

问题分析与解决办法

语法错误的根源

当你在Set语句中调用Workbooks.Open并直接链式访问.Sheets时,必须将Workbooks.Open的参数用括号包裹——因为这是函数调用并返回对象的场景。你之前未加括号的写法不符合VBA语法,修正后才能通过编译:

Set dataSource = Workbooks.Open(Filename:= "https://companyname.sharepoint.com/sites/EnerzUAB/Shared%20Documents/.../BMS%20Monitoring%20Data%20Export.xlsx").Sheets("Sheet1")

文件找不到的核心问题

你最后一段代码里的URL和工作表名称存在错误的URL编码字符:

  • URL末尾的%22是双引号的URL编码,属于多余字符,必须删除;
  • .Sheets(%22Sheet1")里的%22是错误写法,VBA中字符串需用普通双引号包裹,应改为.Sheets("Sheet1")。

修正后的完整代码:

Dim dataSource As Worksheet
Set dataSource = Workbooks.Open(Filename:= _
    "https://companyname.sharepoint.com/sites/EnerzUAB/Shared%20Documents/.../BMS%20Monitoring%20Data%20Export.xlsx").Sheets("Sheet1")

额外注意事项

  • 检查URL拼写:你曾写过https://company name.sharepoint.com,这里的空格是错误的,需和录制宏里的companyname保持一致;
  • 验证文件权限:确保当前Excel进程有权访问该SharePoint/OneDrive文件,必要时手动打开一次文件确认权限;
  • 拆分链式调用(可选):如果打开文件时会触发权限弹窗,链式调用可能出错,可拆分代码提升稳定性:
    Dim wb As Workbook
    Dim dataSource As Worksheet
    Set wb = Workbooks.Open(Filename:= "https://companyname.sharepoint.com/sites/EnerzUAB/Shared%20Documents/.../BMS%20Monitoring%20Data%20Export.xlsx")
    Set dataSource = wb.Sheets("Sheet1")
    

内容的提问来源于stack exchange,提问作者Karolis Zinkus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:35:04