Hallo zusammen,
Seit Tagen beschäftigt mich folgendes Problem, was ich trotz Durchforsten aller Foren
nicht lösen konnte:
Aus VB.Net
Excel starten - Datei editieren - Excel beenden
Eigentlich ganz simpel - es funktioniert auch tadellos (Auch das Beenden ohne Fehlermeldung).
Habe zu diesem Zweck ein eigenes Projekt angelegt und experimentiere damit bis zur Schmerzgrenze.
Egal, was ich mache, es bleibt immer ein Hintergrundprozess von Excel aktiv und ich bekomme ihn nicht
beendet.
Hat jemand dazu eine Idee? Bin mit meinem "Latein" am Ende. Schon mal Danke!
Der Quelltext hier
Edit by ~blaze~:
*Thema verschoben*
Seit Tagen beschäftigt mich folgendes Problem, was ich trotz Durchforsten aller Foren
nicht lösen konnte:
Aus VB.Net
Excel starten - Datei editieren - Excel beenden
Eigentlich ganz simpel - es funktioniert auch tadellos (Auch das Beenden ohne Fehlermeldung).
Habe zu diesem Zweck ein eigenes Projekt angelegt und experimentiere damit bis zur Schmerzgrenze.
Egal, was ich mache, es bleibt immer ein Hintergrundprozess von Excel aktiv und ich bekomme ihn nicht
beendet.
Hat jemand dazu eine Idee? Bin mit meinem "Latein" am Ende. Schon mal Danke!
Der Quelltext hier
VB.NET-Quellcode
- Imports System.Runtime.InteropServices
- Public Class Form1
- Public D_Prüfling As String
- Dim AnzahlP As Integer
- 'Daten Datei(Excel)"Ablesedaten" definieren
- Public D_Pfad As String
- Public D_Filename As String
- Public Quartal As String
- Public xlApp As Microsoft.Office.Interop.Excel.Application
- Public xlMappe As Microsoft.Office.Interop.Excel.Workbook
- Public xlBlatt As Microsoft.Office.Interop.Excel.Worksheet
- 'Public xRange As Microsoft.Office.Interop.Excel.Range
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- D_Prüfling = "D:\LW-Stammdaten\Daten-Dateien\Strom\Stromzählerlisten\2017\Q1\01_Jan\LH_HR_A.xlsx"
- Quartal = "Q1"
- xlApp = New Microsoft.Office.Interop.Excel.Application 'Application (Excel.exe) als Objekt deklarieren
- xlMappe = xlApp.Workbooks.Open(D_Prüfling) 'Datei (WE) als Objekt definieren
- xlBlatt = xlMappe.Worksheets(Quartal) 'Tabellenblatt als Objekt defonieren
- xlMappe.Worksheets(Quartal).select() 'Fokus auf dieses Tabellenblatt
- 'xRange = xlBlatt.Range("A1") 'Leseart im Tabellenblatt festlegen (1:1 oder A:1 bzw. Cells oder Range)
- xlApp.Visible = True 'Ecxel im Hintergrund (nicht sichtbar)laufen lassen
- End Sub
- Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- Call Excel_schließen()
- End Sub
- Public Sub Excel_schließen()
- AnzahlP = 0
- If System.Diagnostics.Process.GetProcessesByName("excel").Length > 0 Then
- For Each Process In Diagnostics.Process.GetProcessesByName("excel")
- AnzahlP = AnzahlP + 1
- 'Marshal.ReleaseComObject(xRange)
- 'xRange.close()
- 'xRange = Nothing
- Marshal.FinalReleaseComObject(xlBlatt)
- 'xlBlatt.close()
- xlBlatt = Nothing
- Marshal.FinalReleaseComObject(xlMappe)
- 'xlMappe.Close() 'schließt Mappe
- xlMappe = Nothing
- 'xlApp.Quit() 'schließt Ecxel
- Marshal.FinalReleaseComObject(xlApp)
- xlApp = Nothing
- 'MsgBox("Excel noch geöfnet ?")
- Next
- End If
- MsgBox("Excel ist noch " & AnzahlP & " mal geöfnet ")
- End Sub
- End Class[vbnet]
Edit by ~blaze~:
*Thema verschoben*
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „~blaze~“ ()