删除空工作表

Deleting empty worksheets

我正在尝试编写代码来删除工作簿中的空工作表。到目前为止,我已经能够使用代码从最高到最低删除工作表:

Dim i As Integer
Dim objExcel As Object = CreateObject("Excel.Application")

objExcel.Visible = True
objExcel.DisplayAlerts = False

Dim objWorkbook As Excel.Workbook = objExcel.Workbooks.Open(TextBox1.Text)
i = objWorkbook.Worksheets.Count


    Do Until i = 2
        objWorkbook.Worksheets(1).Delete()
        i = i - 1
    Loop

我上网查了一下,但没有找到有用的东西。任何人都可以帮助我引导我走向正确的方向,在那里我可以获得有关如何仅使用 VB.net 检测单个工作簿中的空工作表的信息。

谢谢

这样就可以了

Sub DeleteBlankWs() 

    Dim ws As Worksheet 
    For Each ws In Worksheets 
        If WorksheetFunction.CountA(ws.Cells) = 0 Then 
            Application.DisplayAlerts = False 
            ws.Delete 
            Application.DisplayAlerts = True 
        End If 
    Next ws 
End Sub

我创建了一个excel有5个sheets,sheet2和4是空的,然后我编辑了一个micro并且运行它(F5 键或绿色播放图标)...

这应该可以解决 vb.net

Private Sub DeleteBlankWorksheets(xlWorkBook As Excel.Workbook)
    For i As Integer = xlWorkBook.Worksheets.Count To 1 Step -1
        Dim ws As Excel.Worksheet = CType(xlWorkBook.Worksheets(i), Excel.Worksheet)
        If Convert.ToInt64(ws.UsedRange.CountLarge) <= 1 Then
            ws.Delete()
        End If
    Next
End Sub

用调用此函数替换整个循环,将 objWorkBook 对象作为参数传递。

Dim objExcel As Object = CreateObject("Excel.Application")

objExcel.Visible = True
objExcel.DisplayAlerts = False

Dim objWorkbook As Excel.Workbook = objExcel.Workbooks.Open(TextBox1.Text)

DeleteBlankWorksheets(objWorkbook)

'添加这个保存文件

objWorkbook.Save()
objWorkbook.Close()  'closes the files

'如果您遇到文件对象仍然打开的问题,这意味着您可以在任务管理器中看到EXCEL.exe 然后添加以下代码

 For Each instance As Process In Process.GetProcesses
     If InStr(instance.MainWindowTitle, Textbox1.Text) <> 0 Then p.Kill()
 Next

注意:最好确保释放所有 excel 对象(应用程序、工作簿、工作表等),而不是终止进程。这将确保所有数据都按预期保留而没有副作用。如果您发现有额外的 excel.exe 个实例 运行,请务必仔细检查所有内容是否已正确处置和发布。