Hey,
Ich habe mich gerade daran versucht, in eine Exceldatei zu schreiben. Es geht einfach nur ums Prinzip.
1) in der For-Schleife knallt es. Unbehandelte Ausnahme: System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0x800A03EC
Dann muss ich das Debuggen beenden.
2) Excel ist trotz App.Quit() noch im Taskmanager zu sehen. Wie kann ich das richtig beenden?
.NET 4.8
Spoiler anzeigen
Ich habe mich gerade daran versucht, in eine Exceldatei zu schreiben. Es geht einfach nur ums Prinzip.
1) in der For-Schleife knallt es. Unbehandelte Ausnahme: System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.Runtime.InteropServices.COMException: Ausnahme von HRESULT: 0x800A03EC
Dann muss ich das Debuggen beenden.
2) Excel ist trotz App.Quit() noch im Taskmanager zu sehen. Wie kann ich das richtig beenden?
.NET 4.8
VB.NET-Quellcode
- Imports Microsoft.Office.Interop
- Imports Microsoft.WindowsAPICodePack.Dialogs
- Public NotInheritable Class Form1
- Private xlApp As Excel.Application
- Private myWorkbook As Excel.Workbook
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Me.Location = New Point(0, 0)
- End Sub
- Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Await Task.Run(Sub() Schreiben())
- End Sub
- Private Sub Schreiben()
- Dim Pfad As String
- Using SFD1 As New CommonSaveFileDialog
- SFD1.Title = "Exceldatei speichern"
- SFD1.Filters.Add(New CommonFileDialogFilter("Excel", ".xlsx"))
- If System.IO.Directory.Exists("C:\Users\...\source\repos\VB.NET\in Exceldatei schreiben") Then
- SFD1.InitialDirectory = "C:\Users\...\source\repos\VB.NET\in Exceldatei schreiben"
- Else
- SFD1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
- End If
- Dim Result As CommonFileDialogResult
- Me.Invoke(Sub() Result = SFD1.ShowDialog())
- If Result = CommonFileDialogResult.Ok Then
- Pfad = SFD1.FileName & ".xlsx"
- Else
- Return
- End If
- End Using
- Me.Invoke(Sub() Button1.BackColor = Color.FromArgb(255, 255, 0))
- xlApp = New Excel.Application
- xlApp.Visible = True
- myWorkbook = xlApp.Workbooks.Add()
- Dim myWorksheet As Excel.Worksheet = CType(myWorkbook.Sheets("Tabelle1"), Excel.Worksheet)
- myWorksheet.Cells(1, 1) = "data in first cell"
- For i As Integer = 0 To 100 Step 1
- myWorksheet.Cells(i, 1) = i
- Next
- myWorksheet.SaveAs(Pfad, Excel.XlFileFormat.xlWorkbookDefault)
- myWorkbook.Close()
- xlApp.Quit()
- Me.Invoke(Sub() Button1.BackColor = Color.FromArgb(0, 255, 0))
- End Sub
- End Class