如何从UFT中删除Excel工作表

时间:2018-03-09 14:59:11

标签: hp-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

1 个答案:

答案 0 :(得分:1)

尝试纠正上面的代码对我来说太过分了,因为我无法在几个地方说出你的意思 - 所以我根据你在描述中所说的是你的目标重写了它。 / p>

下面的代码将打开文件,以您拥有它们的方式关联对象,将工作簿对象和不要删除的工作表名称传递到DeleteSheet函数,这将删除工作簿中的任何工作表。未根据传入的参数SheetNameNotToDelete

命名

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

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