繁体   English   中英

将基于单元格值的工作表移动到另一个工作簿

[英]Move Worksheet based off a cell value to another workbook

我希望有人可以帮助解决这个问题,但我正忙着做任何事情。 我有一个包含很多工作表的相当大的工作簿,我有一个运行并使用“触发器”填充列 B 的报告 A 列:是工作簿中所有工作表的名称。 B 列是需要移动特定工作表的指示符,例如“是”。 我需要将指定的工作簿移动到另一个工作簿中。

我只能找到移动单元格的适用示例,但它不起作用。 任何帮助或方向将不胜感激!

Dim WBK As Workbook
Dim WBK2 As Workbook 
Set WBK= ThisWorkbook
Set WBK= Workbooks.Open(Filename:"ReportList.xlsx") 
For i = 1 To Sheets("MoveSheet").End(xlDown).Row '(ERRORHERE)
   If Sheets("MoveSheet").Range("B" & i) = "Move" Then 
       Sheets(Sheets("MoveSHeet").Range("A" & i)).Move After:=wkbk2.Sheets(1)
   Else
 End if
Next i 
End Sub

也许 for each 循环会很好。

将 wkbk1 调暗为工作簿 - 主工作簿 将 wkbk2 调暗为工作簿 - 您的其他工作簿

Set wkbk1 = ActiveWorkbook Set wkbk2 = "input name here"

暗淡为工作表

对于 wkbk1.Sheets 中的每个 ws

'使用 if 代码检查是否满足某些条件' ws.Move wkbk2.Sheets(Sheets.Count)

下一个

我将有一个循环遍历 A 列,并通过检查旁边的 B 列来检查工作表是否需要移动。 如果 B 列包含触发器,将使用 if 条件进行检查,则将工作表移动到另一个工作簿。

For i = 1 To Sheets("Sheet1").End(xlDown).Row

如果 Sheets("sheet1").Range("B" & i) = "Yes" 那么

Sheets(Sheets("sheet1").Range("A" & i)).Move After:=Workbooks("Otherworkbook.xls").Sheets(1)

别的

万一

接下来我

像这样的东西,但可能需要用完整的文件名和目录声明第二个工作簿。

您发布的代码并不太远 - 一些错别字等

尝试这个:

Sub Tester()

    Dim wb As Workbook, wsList As Worksheet, c As Range
    Dim wbDest As Workbook
    
    Set wb = ThisWorkbook
    Set wsList = wb.Worksheets("MoveSheet") 'your sheet with tab names and "Move" flag
    
    Set wbDest = Workbooks.Open(Filename:="C:\Example\Path\ReportList.xlsx") 'provide the full path
    
    For Each c In wsList.Range("A1:A" & wsList.Cells(Rows.Count, "A").End(xlUp).Row).Cells
        If c.Offset(0, 1).Value = "Move" Then  'has a flag to be moved?
            wb.Worksheets(c.Value).Move after:=wbDest.Sheets(wbDest.Sheets.Count) 'move after last sheet
        End If
    Next c
    
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM