Excelfenster Wechseln

  • Hallo Community

    Folgendes Problem:

    Im Windows sind mehrere Fenster geöffnet. Angenommen es sind einige Ordnerfenster, 2 einzelne! Excelfenster (mit Titel Tabelle1 und Tabelle 2) und ein externes Programm (nennen wir es: Programm =) ).

    Wenn ich jetzt die Fenster per WinActivate gewechselt werden kommt es zu folgender Problematik.

    Ich wechsel von dem Programm in die schon zuvor aktiv gewesene Tabelle 1 mit dem Befehl WinActivate("Microsoft Excel - Tabelle 1.xls"). Jetzt wechsel ich wieder ins Programm zurück und wechsel von dort in die zuvor nie aktiv gewesene Tabelle 2 mit dem Befehl WinActivate("Tabelle 2.xls"). Jetzt wird allerdings durch Excel dieser Tabelle (oder diesem Fenster) der Titel "Microsoft Excel - Tabelle 2.xls" zugewiesen und die Tabelle 1 hat dann den Titel "Tabelle 1.xls". Somit ist ein zurück wechseln in die Tabelle 1 mit dem Befehl WinActivate(" Microsoft Excel - Tabelle 1.xls" nicht möglich) was allerdings genau mit diesem Befehl notwendig ist. Wenn ich per Mausklick wieder in die Tabelle 1 wechsel erhält sie wieder den Titel "Microsoft Excel - Tabelle 1.xls" und die Tabelle 2 "Tabelle 2.xls".

    Kurz gesagt: Der Titel im Excel ändert sich je nachdem welche Tabelle zuletzt aktiviert war. Ich hoffe Ihr vesteht was ich damit meine.

    Gibt es eine Lösung für sowas? Den es geht ja nicht nur darum mal 2 Tabellen zu haben sondern auch mehrere.

    Wenn jemand einen Ansatz weiß bitte schnell schreiben.

    Vielen Lieben Dank :D

    • Offizieller Beitrag

    Die Lösung:

    [autoit]

    Opt("WinTitleMatchMode", 2)

    [/autoit]

    erlaubt nur Teile des Fenstertitels zu verwenden. ;)

    Oder Variante2: Zugriff auf die Excel Tabellen mit dem Excel-Objekt.

    Edit: Hier das Bsp. zu Variante 2 (Ich würde versuchen alle Operationen mit dem Excel-Objekt auszuführen)

    [autoit]

    Local $Tabelle1 = "Tabelle1.xls"
    Local $Tabelle2 = "Tabelle2.xls"
    Local $oExcel = ObjGet("","Excel.Application")

    [/autoit][autoit][/autoit][autoit]

    Sleep(2000)
    MsgBox(0, '', 'aktiviere: ' & $Tabelle1)
    $oExcel.Workbooks($Tabelle1).Parent.Visible = 1
    $oExcel.Workbooks($Tabelle1).Activate

    [/autoit][autoit][/autoit][autoit]

    Sleep(2000)
    MsgBox(0, '', 'aktiviere: ' & $Tabelle2)
    $oExcel.Workbooks($Tabelle2).Activate

    [/autoit][autoit][/autoit][autoit]

    Sleep(2000)
    MsgBox(0, '', 'aktiviere: ' & $Tabelle1)
    $oExcel.Workbooks($Tabelle1).Activate

    [/autoit]
  • Okay danke erst einmal.

    werd ich heute mal ausprobieren. Kritik oder Lob folgt :)

    Edit:
    Variante 1: Mäßiger erfolg - Recht fehleranfällig
    Variante 2: Vielen Dank - Funktioniert perfekt

    Einmal editiert, zuletzt von Prixma (8. Februar 2011 um 14:51)