Geöffnete Excel-Dateien auflisten?

  • VB.NET

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von xpecidy.

    Geöffnete Excel-Dateien auflisten?

    Servus Leute,

    ich würde gerne in einer Listbox alle geöffneten Exceldokumente auflisten lassen.
    Den namespace Imports Microsoft.Office.Interop habe ich bereits.
    Die Beispiele, die ich im Netz finde, beziehen sich immer auf das neue erstellen einer
    Datei bzw. das öffnen einer fixen Datei (über String-Pfad).

    Über Excel.Application kann ich auch nur eine Instanz erstellen oder?
    Mit vba gehts ziemlich problemlos mit

    VB.NET-Quellcode

    1. for each vwkb in application.workbooks


    Hoffe jemand gibt mir nen Schups in die richtige Richtung! :)

    Vielen Dank!

    lg Markus
    :!: Danke an alle, die ihr Wissen freiwillig teilen und stets so kompetent & höflich sind :!:
    Hi,

    Mit vba gehts ziemlich problemlos mit [...]

    bei VBA hast du auch den Vorteil, dass der Code bereits in der Anwendung läuft, deren geöffnete Dateien aufgelistet werden sollen. Der Kontext des Application-Objekts ist also bekannt und bezieht sich auf die Instanz, in der du deinen VBA-Code ausführst.

    Und hier kommt dein Problem: Ein externes Programm weiß nicht, auf welche Excel-Instanz sich deine Aufrufe an das Application-Objekt beziehen sollen. Daher behandeln sehr viele Beispiele im Netz das Öffnen oder Neuerstellen einer Datei.

    Als einfachen Workaround kannst du die Excel-Dateien aus deinem Programm heraus öffnen, womit du den Application-Kontext frei Haus geliefert bekommst (denn die Dateien werden von dort aus geladen). Ansonsten brauchst du viel Programmiererfahrung - in diesem Thread wurde eine ähnliche Frage gestellt, aber dein Problem ist ein Teil der Lösung.
    Gruß
    hal2000
    Hallo hal2000,

    zunächst entschuldige bitte die späte Antwort. Ostern ist grundsätzlich internetfrei! ;)
    Danke für die informative Antwort! Hätte ich nicht erwartet, dass das so kompliziert ist, eben weil es ja zur "Microsoft-Familie" gehört.

    Ich wünsche eine angenehme schöne Woche & setze das Thema vorerst auf erledigt.

    lg Markus

    *edit*

    Ich habe das Problem mal etwas umgangen, was für meine Zwecke vollkommen zureicht.
    Diesen Code habe ich ergänzt:

    VB.NET-Quellcode

    1. '[...]
    2. For Each item As String In newwindowlist
    3. _match = False
    4. If item.Contains(".xls") Then 'And Not item.Contains("Microsoft Excel") Then
    5. _itemneu = item.Replace(" [Kompatibilitätsmodus]", "")
    6. _itemneu = _itemneu.Replace("Microsoft Excel - ", "")
    7. If Me.ListBox1.Items.Count <> 0 Then
    8. For t = 0 To ListBox1.Items.Count - 1
    9. If ListBox1.Items(t).ToString = _itemneu Then _match = True
    10. Next
    11. End If
    12. If _match = False Then
    13. ListBox1.Items.Add(_itemneu)
    14. End If
    15. End If
    16. Next
    17. '[...]
    :!: Danke an alle, die ihr Wissen freiwillig teilen und stets so kompetent & höflich sind :!:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xpecidy“ ()