提取工作表以分隔文件/变量工作表名称/循环

时间:2014-08-08 09:44:00

标签: excel vba excel-vba variables

我有一张大约60张的电子表格,每周都是相同的+有时会有一张新的表格。

我正在尝试制作将工作表导出到Excel文件中指定的单独文件的宏。 Colum C包含工作表名称,E列包含文件路径。

这是我到目前为止所做的代码,我很难从单元格和保存文件中使用可变图纸名称

Sub SavingweekEnd()
    Dim ABC As String

    Application.DisplayAlerts = False
    ChDir _
    "S:\    Workbooks.Open Filename:= _
    "S:\BD1.xls"
ActiveWindow.ScrollWorkbookTabs Position:=xlLast

    x = 5
    For x = 5 To Range("h1").Value

    ABC = Cells(x, 3).Value

    Sheets(ABC).Select
    Sheets(ABC).Copy

    ActiveWorkbook.SaveAs Filename:=Cells(x, 5).Value, FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
    ReadOnlyRecommended:=False, CreateBackup:=False
    ActiveWindow.Close

    Next x

    ActiveWorkbook.Save
    ActiveWindow.Close
End Sub

1 个答案:

答案 0 :(得分:1)

您的单元格对象不是完全限定的,因此它们将始终引用ActiveSheetActiveSheet许多不是您可能想要使用的工作表。它甚至可能不在您期望的工作簿中。

这是你在尝试的吗?

我的假设

  1. Range("H1").Value的号码有效
  2. Cells(i, 3).Value具有有效的工作表名称
  3. 列E具有完整的文件路径和名称。如果没有,则相应地修改thisws.Cells(i, 5).Value
  4. <强>未测试

    Sub SavingMonthEndCostsheetsSJPUT()
        Dim thisWB As Workbook, thatWb As Workbook
        Dim thisws As Worksheet
        Dim ShtName As String
    
        Dim i As Long
    
        Set thisWB = ThisWorkbook
        '~~> Change this to the relevant sheet name
        Set thisws = thisWB.Sheets("Sheet1")
    
        For i = 5 To thisws.Range("H1").Value
            ShtName = thisws.Cells(i, 3).Value
    
            thisWB.Sheets(ShtName).Copy
    
            Set thatWb = ActiveWorkbook
    
            thatWb.SaveAs Filename:=thisws.Cells(i, 5).Value, FileFormat:=xlNormal
    
            DoEvents
    
            thatWb.Close (False)
    
            DoEvents
        Next i
    End Sub