Blueprism中VB保存工作簿为共享文件时报xlShared未声明错误如何解决?
报错原因
xlShared是Excel类型库内置的枚举常量,BluePrism的VB代码执行环境默认没有加载Excel的枚举库,无法识别该常量的定义,所以编译阶段就会抛出未声明的错误。xlShared对应的实际数值为2,直接使用对应数值即可绕过枚举引用的要求。
修复后的代码
两种写法都可以实现需求:
写法1:直接使用常量对应数值(无需额外定义,更适配BluePrism环境)
newworkbookname = ExecWithTimeout(Timeout, "Save Workbook As", Function() Dim wb as Object = GetWorkbook(handle,workbookname) Dim excel as Object = wb.Application excel.DisplayAlerts = False ' 直接在SaveAs时指定共享模式,避免二次修改的兼容问题 wb.SaveAs(Filename:=filename, AccessMode:=2) excel.DisplayAlerts = True Return wb.Name End Function)
写法2:手动声明常量,代码可读性更高
newworkbookname = ExecWithTimeout(Timeout, "Save Workbook As", Function() Const xlShared As Integer = 2 Dim wb as Object = GetWorkbook(handle,workbookname) Dim excel as Object = wb.Application excel.DisplayAlerts = False wb.SaveAs(filename) wb.AccessMode = xlShared excel.DisplayAlerts = True Return wb.Name End Function)
注意事项
- 执行操作前请确认目标文件不存在,若已存在需要先删除或者开启覆盖写入逻辑,否则SaveAs会触发弹窗阻塞流程
- 共享工作簿不支持部分Excel功能,开启后VBA宏、结构化表格等特性可能无法正常使用
内容的提问来源于stack exchange,提问作者Eoin2211
相关产品推荐
相关产品推荐

