excel - 使用 Word VBA 创建 Excel 工作表的副本
问题描述
对于已经打开的工作簿,我想创建一个工作表(“模板”)的副本,并用我在数组中的值重新命名它。当我调试代码时,当我执行该行时会创建副本,但我仍然收到错误 424:需要对象。
我已经尝试过 On Error Resume Next,但由于我已经在我的 sub 中使用了 On Error GoTo,所以它没有被读取。
Dim oXL As Excel.Application 'Requires loading "Microsoft Excel 16.0 Object Library" from Tools -> References
Dim oWB As Excel.Workbook
Set oXL = New Excel.Application
Set oWB = oXL.Workbooks.Open(FileName:=WorkbookToWorkOn) 'Opens Excel
oXL.Visible = True 'Shows Excel window while running code. Set to false after finished editing.
Dim ws As Worksheet
For i = LBound(seller_names) To UBound(seller_names)
'On Error Resume Next 'Doesn't work
Set ws = oXL.ActiveWorkbook.Sheets("Template").Copy(After:= _
oXL.ActiveWorkbook.Sheets(oXL.ActiveWorkbook.Sheets.Count))
ws.name = seller_names(i)
Next i
解决方案
Sheets.Copy
不返回对复制工作表的引用,因此您需要先复制工作表,然后获取对它的引用:
With oXL.ActiveWorkbook
.Sheets("Template").Copy After:= .Sheets(.Sheets.Count)
Set ws = .Sheets(.Sheets.Count)) '<< get the copy
ws.name = seller_names(i)
End With
On Error Resume Next
应该始终有效 - 但并不总是一个好的解决方案 - 除非您在 VBA 选项中启用了“中断所有错误”。
推荐阅读
- ios - 收到通知时的默认声音和振动
- amazon-web-services - AWS:检查联合登录用户的权限
- python - Plotly:如何设置不同的标记不透明度,但为所有标记保持相同的轮廓颜色?
- ios - 如何修复:当我在搜索栏中单击“取消”时,TableView 中的 func selectRow 不起作用
- react-native - 我如何安装反应导航?
- sql-server - .Net Core Identity 种子数据:无法使用已播种的凭据登录
- python - 为什么我的稀疏张量不能转换为张量
- javascript - 从 Json 导出到 CSV 不带引号?
- python - ValueError:使用序列设置数组元素。同时在模型中拟合数据
- sql - 删除 SQL Server 中重复的最大行