Excel VBA:将工作表移动到新的工作簿,同时维护工作表对象关联
这里的目标是设置工作表对象,然后将该工作表移动到新的工作簿并继续使用该工作表对象。 但是,通过移动该工作表,似乎之前与其关联的工作表对象将丢失。
去testing:
比方说,我们在名为Book1.xlsb和Book2.xlsb的文件夹中有两个excel工作簿,每个工作簿中有一张名为Sheet1的工作表。 当我们打开Book1时,我们把下面的子文件放入工作表对象中,并尝试从另一个工作表移动工作表。
一切都“有效”,但工作表对象在进程中丢失,并且一旦尝试再次使用,就会抛出错误。 是否有可能将工作表移动到一个新的工作簿,而不是丢失工作表对象关联,以便以后可以引用?
Option Explicit Sub test() Dim wb1 As Workbook Dim wb2 As Workbook Dim ws As Worksheet Set wb1 = ThisWorkbook Set wb2 = Workbooks.Open("Book2.xlsb") Set ws = wb2.Sheets(1) ws.Name = "Sheet2" 'name changed to avoid conflict with the one already there ws.Move wb1.Sheets(1) MsgBox ws.Name 'this line throws an error, indicating that ws association has been lost End Sub
编辑:如果这是不可能的,我们如何可靠地重新设置工作表对象到我们刚才移动的那个?
在你的代码中
ws.Move wb1.Sheets(1)
您也可以将工作表ws移动到Book2.xlsb文件的第一个工作表
“表(1)”表示文件的第一张
所以你可以像这样重置ws。
Set ws = wb1.Sheets(1)
重置ws对象:
Set ws = wb1.WorkSheets("Sheet2")
如果你不知道这个名字,你知道它已经移到最后的位置了,对吗?
Set ws = wb1.WorkSheets(wb1.WorkSheets.Count)
如果它被移到第一个位置,那么:
Set ws = wb1.WorkSheets(1)