Office: Instanz beenden

Helfe beim Thema Instanz beenden in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo. Ich habe folgendes Problem. In einem VB-Projekt erzeuge ich eine Liste, die ich dann via VBA in Excel weiterverarbeite. Der... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von UncleAl, 1. September 2012.

  1. Instanz beenden


    Hallo.

    Ich habe folgendes Problem.
    In einem VB-Projekt erzeuge ich eine Liste, die ich dann via VBA in Excel weiterverarbeite.

    Der VB-Code(ausschnitt) sieht folgendermaßen aus:

    Code:
    Beim ersten Durchgang funktioniert alles einwandfrei.
    Excel wird geöffnet und die Daten werden so aufbereitet und angezeigt wie sie das sollen.
    Beim zweiten Durchgang erhalte ich in der TextToColumns-Anweisung einen Laufzeitfehler (1004).

    Mein schwerer Verdacht: es liegt am Öffnen und Schließen der Excel-Instanzen.
    Schließe ich die Excel-Datei existiert im Taskmanager immer noch eine Excel-Instanz. Die verschwindet erst, wenn ich das VB-Programm beende.

    Wo liegt der Fehler?

    Besten Dank Vorab
    Matze

    :)
     
  2. Hallo Matze,

    wenn man mit VB6 bzw. VB.Net auf MS-Office-Dateien zugreift, dann ist es immer von Vorteil, erst ein Obfekt
    zu definieren und dann die Methoden und Eigenschaften auf das Objekt loszulassen.
    Das was in Excel-Vba super läuft, ist oft ohne Objektdefinition ein Stolperstein in VB6 & VB.Net.

    CSVdatei = App.Path & "\" & Datei
    XLSdatei = Mid(CSVdatei, 1, Len(CSVdatei) - 3) & "xls"

    Dim xlApp As Excel.Application, wb As Excel.Workbook, _
    ws As Excel.Worksheet, rg As Excel.Range

    If xlApp Is Nothing Then
    Set xlApp = New Excel.Application
    End If

    xlApp.DisplayAlerts = False
    Set wb = xlApp.Workbooks.Open(Filename:=CSVdatei)
    Set ws = wb.Worksheets(1)
    Set rg = ws.Columns(1)
    rg.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlNone, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
    :="~", FieldInfo:=Array(Array(1, 1)), TrailingMinusNumbers:=True
    ws.Columns.AutoFit
    ws.Range("A1").Select
    wb.SaveAs Filename:=XLSdatei, FileFormat:=xlNormal
    wb.Close False
    xlApp.DisplayAlerts = True
    xlApp.Quit

    DoEvents
    Result = ShellExecute(0&, "Open", XLSdatei, "", "", 1)
    Set rg = Nothing
    Set ws = Nothing
    Set wb = Nothing
    Set xlApp = Nothing

    Kill CSVdatei

    Gruß von Luschi
    aus klein-Paris
     
  3. Hallo Matze,

    Vorsicht bei:
    Code:
    DisplayAlerts sollte m. E. nur unmittelbar vor der betreffenden Operation dekativiert (und nur, wenn nicht anders lösbar) und sofort danach wieder aktiviert werden. Die Konsequenzen von fälschlicherweise deaktiverten DisplayAlerts sind weitreichender als z. B. bei ScreenUpdating! *wink.gif*

    SELECT: Schon bei excelinternen Progrämmchen nicht zu empfehlen, so verbietet sich dies in meinen Augen bei extern auf Excel zugreifenden Anwendungen. Bereiche gehören sauber referenziert:
    Instanz.Workbook.Worksheet.Range

    Hier ist es empfehlenswert, zumindest die geöffnete Datei in eine Varible zu schreiben:
    Code:
    Die Referenzierung wird dadurch nicht nur verkürzt (in der Workbook-Variable ist die Instanz bereits "enthalten"), sondern vor allem EINDEUTIG.

    Der Laufzeitfehler 1004 letztlich kann verschiedene Ursachen haben, z. B. den trivialen, dass keine Daten zum Aufteilen in Spalten gefunden wurden....

    Wenn sich hinter ShellExecute das verbirgt, von dem ich annehme, dass es das tut, wundert mich das nach dieser Programmzeile (was soll die denn überhaupt bewirken?) kein Stück, sondern vielmehr, dass diese Instanz nach Programmende verschwunden sein soll:
    Code:
    [Edit]
    @Luschi
    hier sollte der Bezug noch komplettiert werden:
    Code:
    [/Edit]

    Grüße
    EarlFred
     
    EarlFred, 3. September 2012
    #3
  4. Instanz beenden

    Danke euch beiden.

    Die Tipps brachten leider nicht den gewünschten Erfolg.

    Ich hab den Code jetzt mal zu Testzwecken auf das Mindeste gekürzt.

    Code:
    Ergebnis: CSV als XLS gespeichert, ABER nach Beendigung des VB-Programms geistert im Task-Manager immer noch eine Excel-Instanz rum.
    Ich gehe davon aus, das dies der Grund ist, warum mein Ausgangscode beim zweiten Aufruf abbricht.

    Weitere Tipps?!

    Danke
    Matze

    PS: Wenn ich den Testcode zweimal ausführe geistern zwei "Phantom"-Instanzen im Task-Manager rum.
     
  5. Hallo Matze,

    zu 95% waren das auch keine Tipps, um das konkrete Problem zu beheben, sondern allgemeine Ratschläge... Aber selbst diese beherzigst Du nicht - wie kannst Du die diese dann also bewerten?
    Auf die Frage, ob überhaupt Daten zum Splitten vorhanden sind, gehst Du auch nicht ein.

    Wozu weitere Tipps geben, wenn die genauso wenig beachtet würden? Kann man sich wohl sparen.

    Ich übrigens immer noch nicht.

    Code:
    bringt dann wohl auch nichts.

    Grüße
    EarlFred
     
    EarlFred, 3. September 2012
    #5
Thema:

Instanz beenden

Die Seite wird geladen...
  1. Instanz beenden - Similar Threads - Instanz beenden

  2. Handling mehrerer Word-Instanzen

    in Microsoft Word Hilfe
    Handling mehrerer Word-Instanzen: Hallo zusammen, ich habe ein Problem, bei dem ich einfach nicht weiterkomme. Zusammenfassung: Es gibt eine Dokumentenvorlage, auf Basis derer CV's der Mitarbeiter erstellt werden können. Erstelle...
  3. Excel öffnet 2.-3. Datei usw. nur in neuen Instanzen

    in Microsoft Excel Hilfe
    Excel öffnet 2.-3. Datei usw. nur in neuen Instanzen: Liebe Commune, ich arbeite so gut wie immer in unterschiedlichen Excel-Instanzen, Angewohnheit, mehrere Monitore. Dieses habe ich stets leger via Strg.+Icon angestoßen. Jetzt ist es aber bei mir...
  4. Alle offenen Word instanzen schließen

    in Microsoft Excel Hilfe
    Alle offenen Word instanzen schließen: Hallo zusammen, steh mal wieder auf dem Schlauch und brauch eurer Unterstützung Also Ich erzeuge aus Excel heraus Briefe (Word), druck diese und speichere diese als PDF das klappt soweit Ich...
  5. Öffnen einer zweiten Arbeitsmappe in einer anderen Instanz von Excel

    in Microsoft Excel Tutorials
    Öffnen einer zweiten Arbeitsmappe in einer anderen Instanz von Excel: Öffnen einer zweiten Arbeitsmappe in einer anderen Instanz von Excel Excel 2013 Mehr... Weniger Wenn Sie...
  6. "Nur Werte" aus anderer Excel Instanz einfügen

    in Microsoft Excel Hilfe
    "Nur Werte" aus anderer Excel Instanz einfügen: Ich habe in Excel 2010 öfter die Aufgabenstellung, Werte aus einem anderen oder dem gleiche Arbeitsblatt ohne Formatierung einzufügen. Mein üblicher Weg ist es, die Werte einzufügen und dann aus...
  7. Word-Instanzen sauber beenden

    in Microsoft Access Hilfe
    Word-Instanzen sauber beenden: Aus access 210 erzeuge ich seinen serienbrief mit eine Excel-Datenquelle Code: Option Explicit Private Const strDatenQuelle As String = "O:PraktserieDatenprakt.xlsx" Private Const strWOrdvorlage...
  8. VBA - Macro in Instanz 1 wartet bis macro in Instanz 2 fertig ist - WARUM ?

    in Microsoft Excel Hilfe
    VBA - Macro in Instanz 1 wartet bis macro in Instanz 2 fertig ist - WARUM ?: Hallo zusammen, ich teste gerade wie man in Excel zwei Instanzen nutzen kann. Was ohne Probleme klappt ist eine weitere Instanz zu öffnen und ein entsprechendes Workbook zu laden. In dem zweiten...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden