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
相关产品推荐
相关产品推荐

