vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Excel und WinForm-Anwendung 
Autor: niitaka
Datum: 08.06.12 14:52

Hallo zusammen,

Ich öffne von einer WindowsForms-Anwendung heraus Excel und schreib dorthin ein paar daten. Die Windows Forms Anwendung geht jetzt (quasi) auf Sleep-Modus.

Die Excel-Datei soll weiterhin geöffnet bleiben (ist eine Rechnung) und mit dem Benutzer interagieren. Wenn die Datei (Rechnung fertig ist), wird diese gespeichert oder gedruckt und dann geschlossen.

So, nun mein Problem, ab hier komme ich nicht weiter:

Vor dem Schließen sollen ein paar relevante Daten wieder in meine Anwendung zurückgeschrieben werden. Wie realisiere ich dies?

Ein Event von der WF-Anwendung heraus (Excel_BeforeClose) gibt es ja nicht...

Anbei mein bisher bestes Ergebnis. Es funktioniert im Prinzip, nur leider wird Excel laut Task-Manager nicht zuverlässig geschlossen. Habe eine Form mit Button1 erstellt, welche nachfolgenden Code ausführt:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) _
  Handles Button1.Click
        Dim exlApp As Excel.Application
        Dim exlWB As Excel.Workbook
        Dim exlWS As Excel.Worksheet
        Dim test1 As String = "9999"
        Dim test2 As String = "121001"
        Dim test3 As String = CStr(Date.Now())
        Dim test4 As String = "0"
 
        exlApp = New Excel.Application
 
        With exlApp
 
            'temporäre Datei erstellen
            Dim sPath As String = My.Computer.FileSystem.GetTempFileName
 
            'Die unter Ressource abgelegte Datei in die temporäre Datei 
            ' schreiben
            My.Computer.FileSystem.WriteAllBytes(sPath, My.Resources.Woohoo, _
              False)
 
            'Excel anzeigen
            .Visible = True
 
            'Datei und Sheet öffnen
            exlWB = .Workbooks.Open(sPath)
            exlWS = exlWB.Sheets(1)
 
            'speichern
            exlWB.SaveAs(test2 & " " & test1)
 
            'DAten in die Excel-Datei mit vordefinierten Zellnamen schreiben
            exlWS.Range("KdNr").Value = test1
            exlWS.Range("Rechnung").Value = test2
            exlWS.Range("Datum").Value = test3
            exlWS.Range("Summe").Value = test4
 
            'Letzte Speicherzeit abrufen
            Dim test As DateTime = File.GetLastWriteTime(exlWB.Path & "\" & _
              exlWB.Name)
 
            Do
                Try
                    'speicherzeiten vergleichen
                    If test <> File.GetLastWriteTime(exlWB.Path & "\" & _
                      exlWB.Name) Then
 
                        'Wenn ungleich, dann die Daten wieder aus der 
                        ' Excel-Datei zurückschreiben
                        test1 = exlWS.Range("KdNr").Value
                        test2 = exlWS.Range("Rechnung").Value
                        test3 = exlWS.Range("Datum").Value
                        test4 = exlWS.Range("Summe").Value
 
                        'Abgeholte Daten anzeigen
                        MsgBox("Kundennummer: " & test1 & vbNewLine & _
                               "Rechnungsnummer: " & test2 & vbNewLine & _
                               "Datum: " & test3 & vbNewLine & _
                               "Summe: " & test4)
 
                        'Speicherzeit für neuen Vergleich setzen
                        test = File.GetLastWriteTime(exlWB.Path & "\" & _
                          exlWB.Name)
 
                    End If
                Catch ex As Exception
                    'Wenn die Abfrage wegen bereits geschlossener Excel-dAtei 
                    ' nicht möglich war
                    Exit Do
                End Try
            Loop
 
            'sicher schließen
            exlApp.Quit() 'Funktioniert nicht, im Task-Explorer immer noch 
            ' geöffnet
            GC.Collect() 'Macht auch nix
        End With
 
    End Sub
Kann mir gar nicht vorstellen, dass noch niemand etwas derartiges gebraucht hätte!
Steh irgendwie auf dem Schlauch. Bitte um Hilfe.

Grüße
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Excel und WinForm-Anwendung1.785niitaka08.06.12 14:52
Re: Excel und WinForm-Anwendung1.134ModeratorFZelle08.06.12 15:38
Re: Excel und WinForm-Anwendung1.114niitaka08.06.12 17:52
Re: Excel und WinForm-Anwendung1.189ModeratorFZelle08.06.12 20:43
Re: Excel und WinForm-Anwendung1.161niitaka09.06.12 10:04
Re: Excel und WinForm-Anwendung1.150ModeratorFZelle09.06.12 18:17
Re: Excel und WinForm-Anwendung1.138niitaka09.06.12 20:04
Re: Excel und WinForm-Anwendung1.173Franki10.06.12 01:40

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel