访问工作簿并创建具有名称值集的新工作表



我想打开一个现有的 excel 工作簿并添加一个带有给定名称的工作表。所有这些都必须从不同的 excel 工作簿中完成

我能够通过执行代码从空白工作簿打开现有工作簿。但是当我厌倦了向打开的工作手册添加新工作表时,我的代码正在执行工作簿中添加新工作表(空白工作簿(

Sub Valuesets()
Dim ws As Worksheets
Dim PTable1 As PivotTable
Dim sheet As Sheets
Set wb = ActiveWorkbook
Workbooks.Open("C:UsersuserDesktopworkbook1.xlsb").Worksheets("Data").Activate
On Error Resume Next
Application.DisplayAlerts = False
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "Test-1"
Application.DisplayAlerts = True
Set CSheet = Worksheets("Data")
Set SSheet = Worksheets("Test-1")
End Sub

您应该将打开的工作簿设置为变量OpenWb,以便您可以访问它以在此特定工作簿OpenWb.Sheets.Add中添加工作表。数据手册和新表也是如此。始终避免使用.ActivateActiveSheet.Select,如如何避免在 Excel VBA 中使用"选择"中所述。

还要确保您不要像以前那样使用On Error Resume Next。此行隐藏所有错误消息,直到End SubOn Error Goto 0,但错误仍然发生。你只是隐藏他们的消息。如果您没有看到错误,则无法修复它们。如果你不告诉用户出了问题,他将继续使用错误状态!

始终实现正确的错误处理:VBA错误处理–完整指南。
使用On Error Resume Next(除非您知道在哪些极少数情况下可以使用它(是一种非常糟糕的做法,会产生更多问题而不是防止问题。

Sub Valuesets()
Dim OpenWb As Workbook
Set OpenWb = Workbooks.Open("C:UsersuserDesktopworkbook1.xlsb")
Dim wsData As Worksheet
Set wsData = OpenWb.Worksheets("Data")
Application.DisplayAlerts = False
Dim NewSheet As Worksheet
Set NewSheet = OpenWb.Sheets.Add(Before:=wsData)
NewSheet.Name = "Test-1"
Application.DisplayAlerts = True
End Sub

相关内容

最新更新