У меня есть:
Public Class ExcelProcess
Private App As New Excel.Application
Private Books As Excel.Workbooks = App.Workbooks
Private WB As Excel.Workbook
Public Sub deleteSheets()
Dim sheet As Excel.Worksheet = getSheetToDelete()
sheet.Activate()
sheet.Delete()
WB.Save()
WB.Close()
End Sub
Private Function getSheetToDelete() As Excel.Worksheet
Try
WB = Books.Open("file.xlsx")
Catch ex As Exception
InputOutput.print(ex.Message)
End
End Try
Return WB.Sheets(1)
End Function
End Class
Я запустил вышеуказанный код, и он запустился успешно, без каких-либо ошибок или исключений!
Но листне был удален!
<ОБНОВЛЕНИЕ>
Я также пытался:
sheet.Select()
sheet.Delete()
' Now, this gave me an exception:
Unhandled Exception: System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC
at Microsoft.Office.Interop.Excel._Worksheet.Select(Object Replace)
at DealerCapReport.ExcelProcess.deleteSheets()
at DealerCapReport.MainModule.Main()
<Другое ОБНОВЛЕНИЕ>
Я пытался проверить sheet.Delete () для успешного завершения ошибки:
If sheet.Delete() Then ' Error: Expression does not produce a value.
Console.WriteLine("Can-not Delete")
End If
Он говорит Ошибка: выражение не выдает значение. в sheet.Delete ().
Странно то, что ссылка Microsoft API говорит о том, что она выдаст логическое значение, ноэто не так, как Sub, а не функция.
Как и что происходит?
Я что-то не так делаю?
Пожалуйста, помогите мнеисправить это!