excel - 在工作簿之间复制工作表并覆盖当前工作表
问题描述
我编写了 VBA 代码来打开目标工作簿,复制其中一个工作表,并将其粘贴到当前工作簿中。
当我第二次或第三次运行它时……而不是覆盖当前的工作表,它会创建一个全新的工作表。
例如:工作表称为“数据”,第一次传输“数据”,第二次传输“数据(2)”。
我有另一个使用 VLOOKUP 函数查看此数据工作表的某些单元格的工作表,因此它具有正确的名称“数据”至关重要。
我曾考虑在运行宏之前删除当前(数据)文件,但是如果发生崩溃并且我丢失了工作表怎么办?有更好的解决方案吗?
注意:我正在从主工作簿运行宏以获取要从外部工作簿复制的工作表。
Sub UpdateT()
Dim wb As Workbook
Dim aw As Workbook
'Open 2nd Workbook
Set aw = Application.ActiveWorkbook
Set wb = Workbooks.Open(Filename:="C:\Users\yilmadu00\Desktop\T.xlsx")
'Copy To Different Workbook
wb.Sheets("data").Copy After:=aw.Sheets("Data1")
'Close 2nd Workbook
aw.Save
wb.Close
aw.Sheets("data").Visible = False
ActiveWorkbook.Protect ("Password")
End Sub
解决方案
检查工作表是否存在的功能(归功于@ScottCrainer):
Function SheetExists(ws As String)
SheetExists = Not IsError(Application.Evaluate(ws & "!A1"))
End Function
笔记:
它确实存在问题:如果工作表上的 A1 包含错误,它将返回假阴性。
推荐阅读
- r - 增加输入的德雷克计划工作流程
- c# - 在 Entity Framework Plus 中的 IncludeFilter 上使用 AND (&&) 运算符不会带回嵌套/子对象
- java - 我们如何在序列的警报对话框中显示选定的 ListView 项?
- ios - 在 SwiftUI 中更新路径
- c# - DbContext 获取
返回动态表 - node.js - 使用 Joi 验证密码
- web-scraping - 正在使用的 LinkedIn 访问令牌
- sql-server - SQL Server 中手动表编辑的追溯跟踪
- wpf - 访问键在弹出窗口(WPF)中不起作用
- sql-server - 从 c# 调用存储过程返回与 MSSMS 不同的值