1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

XL-Makro: Fokusverluste (oder was sosnt?)

Discussion in 'Office-Programme' started by Eric March, Jul 2, 2012.

Thread Status:
Not open for further replies.
  1. Eric March

    Eric March CD-R 80

    Hallo!

    Folgender Code (alles richtig gedimt & belegt) einer Mappe C…
    Code:
      Set EggSell = CreateObject("Excel.Application")
      EggSell.Visible = True
      EggSell.Workbooks.Open DATEI_A
      EggSell.WindowState = xlMinimized
      Workbooks.Open (DATEI_B)
       Application.Run Chr(39) & DATEI_B & Chr(39) & "!Makro_X", 1, True
       Application.Run Chr(39) & DATEI_B & Chr(39) & "!Makro_X", 2, True
      EggSell.WindowState = xlMaximized
      EggSell.ActiveWorkbook.Close (False)
      EggSell.Quit
      Set EggSell = Nothing
      Application.Run Chr(39) & DATEI_B & Chr(39) & "!Makro_Y"
      Workbooks(DATEI_B).Close (True)
    …soll bewirken, dass die als ›greifbar‹ ermittelte Datei A geöffnet wird um sie vor Fremdzugriff zu schützen - allerdings nicht in dieser XL-Instanz: Beobachtungen belegen, dass diese Mappe das Arbeitstempo von Datei B gehörig ausbresmt. Nichts geringeres als das ist der Grund für diese Übung.

    A also geht auf - und bleibt vorne! Man sieht nicht was B gerade treibt (das dauert länger, aber mit A im Verein noch viel viel länger). Ich meine mir mit Minimized helfen zu können, aber das klappt nicht recht.
    Frage 1: wie bekomme ich B zum 1. Application.Run sichtbar in den Vordergrund? Muss ich dazu der Application den Focus geben; oder diesen beim Starten von EggSell unterdrücken?

    Mappe B, nachdem A zu ist, öffnet selbstständig (im 3. Application.Run) Mappe A um erfasste Daten da reinzuschreiben [deswegen brauche ich A ja ›exklusiv‹] und macht sie wieder zu.
    Nun wird B geschlossen…
    Frage 2: kann es sein, dass B dennoch irgendwie nicht den Focus hat, nicht Activated ist, was auch immer?
    …wobei Workbook_BeforeClose durchlaufen wird (B wird auch per Hand bedient, und da muss eine Notbremse greifen). Und hier knallt es (Spalte=2):
    Code:
      Farbe = Cells(2, Spalte).Font.ColorIndex '←
      Cells(1, Spalte).Font.ColorIndex = Farbe
    (Nichts als optische Korrektur gegen Hand-Werker.) Zelle B2 ist in Mappe B mit Text gefüllt. In Mappe C aber nicht.
    Frage 3: hat denn C immer noch den Focus, ist Blatt #1 von C immer noch Activated? Das wäre Mumpitz weil doch B ohne Referenzierung problemlos nach A (mit Referenzierung) übertragen kann!

    Wie also ist hier «das Hausrecht» verteilt, wie kriege ich meine Mappen und Blätter so nach vorne wie ich sie haben will?

    Eric March
     
  2. Eric March

    Eric March CD-R 80

    Zurück zum letzten Codeschnipsel:
    Ich kapiere da nun gar nichts mehr. Im Direktfenster kann ich da diverse Dinge anstellen - mir wird z.B. der Value von Zelle 2|Spalte völlig korrekt angegeben, und es kommt das zum Vorschein was ich dort erwarten sollte. Als ist es höchstoffensichtlich die richtige Zelle.

    Will ich mir aber die Font z.B. beim Namen nennen lassen bekomme ich Laufzeitfehler 424 (Objekt erforderlich). Ach…
    Ich meine, wenn die Zelle einen Textinhalt hat und keinen Geist oder heiße Luft - dann sollte ein Text auch eine Font benötigen. Oder nicht?

    Sahnehäubchen ist, dass das vor den Klimmzügen mit EggSell wunderbar geklappt hat. Mappe C hat A und B direkt geöffnet (also so wie nun nur noch B), was ja B einbremst.

    Was ist da faul?

    Eric March
     
  3. Eric March

    Eric March CD-R 80

    …eben wieder den o.g. Unfall gehabt. Debugguing beendet, normalen Abschluss-Button gedrückt - lief wie eine Eins.
    Watt nu..?
     
  4. bahnrat

    bahnrat Kbyte

    Hallo!

    Indem Du vernünftig programmierst. Mehrere Excel-Instanzen haben schon immer solche Probleme verursacht. Du solltest in einer Excel-Instanz bleiben. Auch in dieser kannst Du Dateien vor "Fremdzugriff" schützen. Z.B. Mit Tabellenschutz, welcher zur Makro-Laufzeit aufgehoben und wieder gesetzt wird. Lass Deine Klimmzüge weg und programmiere vernünftig. Ich habe jetzt auch keine Lust alles nachzustellen (ich brauche mein System noch).

    EggSell.Activate kannst Du auch noch versuchen.

    Gruß, René
     
  5. Eric March

    Eric March CD-R 80

    Hi!

    Das vernünftig-programmieren kann man vergessen wenn man ein paar Brocken vor sich mit denen man hantieren muss wie sie sind… Ich muss mit Mappe A leben wie sie ist, dasselbe mit B - weil beide eigenständig genutzt werden sollen und müssen.

    EggSell.Activate - würde mir was nützen? Der Gag ist, dass ich EggSell im Gegenteil schön inaktiv haben will, nur als kostenlosen Parkplatz.

    Das mit dem Bremseffekt durch eine mitgeöffnete Mappe B war mir auch schon aufgefallen - aber warum beeilen? :heilig:
    Für Kollegen die Mappe A live brauchen stellt sich das Problem aber schon wenn sie mit B Daten sammeln.

    A und B gemeinsam per Hand bedient funktionieren da sogar recht gut. Nur wenn ich das über die zeitgesteuert geöffnete Mappe C laufen lasse (weil nur da ein AutoMakro beim Öffnen greifen darf; nicht bei A und nicht bei B) gibts den Ärger. Allein; ich könnte nicht mal B per TaskPlaner aufrufen weil das einen Unfall gibt wenn B anderweitig geöffnet ist.
    Auch eine Art B2 zu erfinden ist nicht drin da ich da immer wieder individuelle Schlaglöcher als Ausnahmen einprogrammieren muss; und jedes Mal aus einer B-Kopie die Makros zu lesen um sie bei B2 einzubauen - neee…


    Wie also kommen solche Ausfälle überhaupt zu Stande; wie geht der komplette Zusammenhang verloren?
    Oder gilt da mal wieder die übliche XL-Macke - not a bug but a feature?

    Eric March
     
  6. bahnrat

    bahnrat Kbyte

    1. Ich sagte doch schon das mehrere Excel-Instanzen wenig hilfreich sind. War schon immer so.
    2. Hier in diesem Forum für Kugelschreiber-Zusammensetzer wirst Du kaum professionelle Hilfe bekommen. Daher wieder einmal der Hinweis auf das bekannte Fachforum (Wenn ich nicht irre dann habe ich Dich schon einmal an anderer Stelle darauf hingwiesen, lieber MyEta). :D
    http://www.office-loesung.de/index3.php, da werden Sie geholfen.
     
  7. Eric March

    Eric March CD-R 80

    …ich kann mir Namen immer so schlecht merken…
    Auch nicht die von Foren.

    Die Instanzen würde ich vermeiden wenn ich einen besseren Diebstahlschutz wüsste.

    μη :D
     
Thread Status:
Not open for further replies.

Share This Page