如何从 UFT 中删除 excel sheet

How to delete excel sheet from UFT

我正在尝试编写一个函数,它将删除除作为参数传递的工作表之外的所有工作表。正在调用以下函数,但函数不会删除任何工作表。如何删除除一个以外的所有工作表?

.......

 Set ExcelObj = createobject("excel.application")
    ExcelObj.Visible = true
    Set ConfigFile = ExcelObj.Workbooks.Open (FilePath)
    Set ConfigSheet = ConfigFile.Worksheets("Scripts")
    Set ConfigApplicationSheet = ConfigFile.Worksheets("Applications")
    Set ExecutiveSummarySheet = ConfigFile.Worksheets("Summary")
    ExcelObj.ActiveWorkBook.SaveAs SummaryFilePath
    DeleteSheet "ConfigScripSheet","Summary"

    Function DeleteSheet(ConfigSheet,mySheetname)


        'Writing Name and Path of each File to Output File
        For Each ObjFile In ObjFiles
            ObjOutFile.WriteLine(ObjFile.Name & String(50 - Len(ObjFile.Name), " ") & ObjFile.Path)
        Next

        ObjOutFile.Close

        DeleteSheet = 0
        ExcelObj.DisplayAlerts = False
        For Each objWorksheet In ConfigSheet.Worksheets

            If not objWorksheet.Name = mySheetname Then
               DeleteSheet = 1
               ConfigScripSheet.sheets(objWorksheet.Name).Select
               ConfigScripSheet.sheets(objWorksheet.Name).Delete
               ExcelObj.DisplayAlerts = False

            End If

        Next

    End Function

尝试更正你上面的代码对我来说是一个雷区,因为我无法在几个地方说出你的意思 - 所以我根据你在描述中所说的内容重写了它是你的目标。

下面的代码将打开文件,按照您拥有的方式关联对象,将工作簿对象和一个 sheet 名称传递给 DeleteSheet 函数,该函数将删除工作簿中未根据传入参数 SheetNameNotToDelete

命名的任何 sheet

如果有任何代码不清楚,请告诉我。

Option Explicit     ' Forces declaration of variables

Dim FilePath, SummaryFilePath   '<-- Need set to some value!
FilePath = ""
SummaryFilePath = ""
Dim ExcelObj : Set ExcelObj = CreateObject("Excel.Application")
Dim ConfigFile : Set ConfigFile = ExcelObj.Workbooks.Open(FilePath)
Dim ConfigSheet : Set ConfigSheet = ConfigFile.Worksheets("Scripts")
Dim ConfigApplicationSheet : Set ConfigApplicationSheet = ConfigFile.Worksheets("Applications")
Dim ExecutiveSummarySheet : Set ExecutiveSummarySheet = ConfigFile.Worksheets("Summary")

ExcelObj.ThisWorkbook.SaveAs SummaryFilePath

DeleteSheet ConfigFile, "Summary"

Function DeleteSheet(ByRef WorkbookObj, ByVal SheetNameNotToDelete)
    Dim oWorksheet
    For Each oWorksheet In WorkbookObj.Worksheets
        If oWorksheet.Name <> SheetNameNotToDelete And WorkbookObj.Worksheets.Count >=2 Then
            oWorksheet.Delete   ' Excel won't let you delete all worksheets from a workbook
        End If                  ' the check on Count >=2 covers the case where no worksheet exists
    Next                        ' called "Summary" to be left
End Function