Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1352to1356
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Ab wann ist Application.visible = True

Ab wann ist Application.visible = True
07.03.2014 07:33:30
Andreas
Hallo zusammen,
ich hätte mal eine Frage bezüglich dem Applcation Object. Ich arbeite mit Dateien die ursprünglich mit Excel 2000 (oder früher) erstellt worden. Im Workbook_Open Ereignis wird abgefragt, ob Application.Visible = True ist, nur dann wird das eigentliche Programm gestartet. Diese Funktion wird genutzt, damit nicht die Gui des Programms geladen wird, wenn die Datei von aussen mit Application.Visible = False aufgerufen wird. Leider geht diese Eigenschaft irgendwann ohne erkennbaren Grund verloren oder anders ausgedrückt, die Eigenschaft Apllication.Visible ist erst dann wahr, wenn das Workbook_Open Ereignis abgearbeitet ist oder im Workbookopen Ereignis eine MessageBox aufgerufen wird (z.B. 2 mal: Msgbox application.visible). Bei ersten Aufruf False, beim Zweiten True. Ich habe schon mehrere Tests gemacht um den Fehler einzugrenzen, komme aber nicht wirklich weiter. Wenn ich eine neue leere Excel Mappe erstelle (2007 oder 2010) ist das Application Objekt im Workbook_Open Ereignis immer auf False. Wenn ich ein altes Dokument habe funktioniert es solange, bis in irgendeiner Zelle (Egal in welcher Tabelle) eine Formel eingegeben wird. Ganz egal was ich danach versucht habe, das Application Object bleibt im Workbook_Open Ereignis auf False (Bis z.B. eine Msgbox aufgerufen wurde). Ich habe leider kein Excel 2000 (oder früher) mehr um damit zu testen. Kann irgendjemand dieses Verhalten reprodzuzieren oder mir sagen warum es so ist?

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zeige mal deine Code zum Testen! (owT)
07.03.2014 08:57:14
EtoPHG

AW: Zeige mal deine Code zum Testen! (owT)
07.03.2014 09:23:59
Andreas
Hier ist ein Code der das Verhalten zeigt. Beim öffnen diser Mappe sollte kein anderes Ecel geöffnet sein, sonst ist das Application Objekt auf jeden Fall sichtbar.
Private Sub Workbook_Open()
Dim str As String
' 1. Aufruf
If Application.Visible Then
str = "True"
Else
str = "False"
End If
Debug.Print str
MsgBox str
'2. Aufruf
If Application.Visible Then
str = "True"
Else
str = "False"
End If
Debug.Print str
MsgBox str
End Sub

Sorry, beim mir IMMMER True (owT)
07.03.2014 09:30:05
EtoPHG

is ja auch logisch das es True bleibt ...
07.03.2014 10:32:39
Matthias
Hallo
... wenn man 2x den gleichen Aufruf startet
Gruß Matthias

Anzeige
AW: is ja auch logisch das es True bleibt ...
07.03.2014 10:43:46
Andreas
Also bei mir ist es so: Ich öffne eine Excel mit dem obigen Code (Kein anderes Excel geöffnet, die Abfrage zum aktivieren (Macro) wurde bereits einmal bestätigt, so dass sie beim öffnen nicht erscheint). Msgbox1 = False, Msgbox 2 = True.

kann ich nicht nachvollziehen ...
07.03.2014 11:12:59
Matthias
Hallo
Kann ich nicht nachvollziehen
Im Workbook_Open werden 2 absolut identische Abfragen hintereinander geschalten
Wieso sollte bei der 2.Abfrage (innerhalb des Workbook_Open) was Anderes rauskommen?
Sorry, bei mir genauso 2 x True wie bei Hansueli.
Gruß Matthias

AW: kann ich nicht nachvollziehen ...
07.03.2014 11:33:23
Andreas
Hallo Mathias,
wie schon gesagt ist es bei mir so, dass wenn ich das Excel mit dem Code öffne, das Application Object erst auf Visible=true ist nachdem die (oder allgemein irgendeine) Messagebox gezeigt wurde. Wenn das bei euch nicht so ist muss es ja Irgendetwas mit dem lokalen Umfeld zu tun haben (System, Office Version, Sicherheitseinstellungen, ...). Ich werde nochmal in einem anderen Umfeld testen und Rückmeldung geben.
Gruß Andreas

Anzeige
Was heisst Excel mit dem Code öffne,,,
07.03.2014 11:52:25
EtoPHG
Andreas?
Application ist das Excel-Objekt (Programm) selbst. Ich nehme an, das ist beim angegeben VBA-Level klar.
Wie öffnest du die Arbeitsmappe?
Excel starten => Application.Visible ist true
Öffnen Arbeitsmappe => Application.Visible ist immer noch true
oder
Per VBA-Code eine XL-Instanz öffnen und diese .Visible = False setzen
Per VBA-Code die Arbeitsmappe öffnen => Application.Visible ist false
Gruess Hansueli

AW: Was heisst Excel mit dem Code öffne,,,
07.03.2014 12:13:56
Rudi
Hallo Hansueli,
er hat geschrieben
dass wenn ich das Excel mit dem Code öffne
mit das Excel meint er wohl eine Mappe.
Ich nehme an, das ist beim angegeben VBA-Level klar.
Damit kann es nicht weit her sein.
Einen True-/ False-Zustand einem String statt einem Boolean zuzuweisen erfordert schon einiges.
Gruß
Rudi

Anzeige
AW: Was heisst Excel mit dem Code öffne,,,
07.03.2014 12:22:38
Andreas
Hallo Rudi,
ich weise einem String kein Boolean zu sondern dokumentiere damit lediglich den Zustand der Application.Visible Eigenschaft.
Gruß
Andreas

dfür würde aber ....
07.03.2014 12:49:36
Rudi
Hallo,
das vollkommen ausreichen:
Private Sub Workbook_Open()
With Application
'1.Aufruf
Debug.Print .Visible
MsgBox .Visible
'2. Aufruf
Debug.Print .Visible
MsgBox .Visible
End With
End Sub

Gruß
Rudi

AW: dfür würde aber ....
07.03.2014 12:56:33
Andreas
Hallo Rudi,
sicherlich würde der von Dir gepostete Code dafür ausreichen. Im Original Dokument wird jedoch, abhängig von der Eigenschaft Visible, bestimmter Code ausgeführt, bzw. nicht ausgeführt, deshalb die kompletten If Then Else Blöcke.
Gruß
Andreas

Anzeige
Von was redest du eigentlich?
07.03.2014 14:34:55
EtoPHG
Hallo Andreas,
Zitat:Also bei mir ist es so: Ich öffne eine Excel mit dem obigen Code (Kein anderes Excel geöffnet, die Abfrage zum aktivieren (Macro) wurde bereits einmal bestätigt, so dass sie beim öffnen nicht erscheint).
Du öffnest eine Arbeitsmappe und nicht 'eine Excel'!
Die Abfrage ob Makros zu aktiviert werden sollen, hat überhaupt nichts mit der Tatsache zu tun, ob das für eine andere Arbeitsmappe schon mal bestätigt wurde oder nicht! Die Abfrage hängt mit Tatsachen wie: Einstellungen Makrosicherheit, Zertifizierte VBA-Projekt, Vertrauenswürdiger Speicherort der Mappe zusammen und nicht mit 'Makroeinstellungen' von 'Arbeitsmappen' untereinander.
Und noch mal: Das Application-Objekt ist Excel als Programm und nicht eine Excel-Arbeitsmappe! Für eine Arbeitsmappe gibt es keine .Visible Eigenschaft! Und darum ist es auch Quatsch irgendeinen Codeaufruf von dieser Eigenschaft abhängig zu machen! Diese erwähnten würden also nur dann
Gruess Hansueli

Anzeige
AW: Von was redest du eigentlich?
07.03.2014 15:15:49
Andreas
Hallo Hansueli,
es tut mir leid, dass ich mich augenscheinlich so schwer ausdrücke. Ich versuche es nochmal.
Als Erstes, mir ist klar, dass "Application" Excel ist.
Wir arbeiten hier mit Excel-Dokumenten (Mit GUI) um Daten aufzunehmen.
Normalerweise werden diese Dokumente vom Benutzer direkt oder aber über SAP aufgerufen. Im Workbook_Open Erignis wird abgefragt ob das Application Objekt sichtbar ist, nur dann wird die GUI des Dokuments (Die Formulare im Dokument)gestartet. Das hat folgenden Grund: Sobald alle Daten aufgenommen worden sind, wir das Dokument von SAP zurückgeladen. Dazu macht SAP folgende Schritte:
1. Dokument speichern
2. Dokument schliessen
3. Eine neue Instanz von Excel mit Visible=False erzeugen
4. Das zuvaor gespeicherte Dokument öffnen
5. Die Daten auslesen und speichern
6. Das Dokument schliessen
Ich weiss nicht warum das so im ABAP Code hinterlegt ist, habe jedoch auch nicht die Möglichkeit es zu ändern.
Damit nicht jedesmal wenn das Dokument von SAP mit Application.visible = False geöffnet wird, die GUI des Dokuments aufgeht und damit der ganze Programmcode startet, ist im Workbook_open Ereignis die Abfrage nach dem Application Objekt (Dadurch das eine neue Instanz erzeugt wird gibt es dann ja auch nur das besagte Dokument in dieser Instanz) hinterlegt. Das alles funktioniert auch einwandfrei. Es kann jedoch auch passieren, dass das Dokument direkt, also aus den Filesystem herraus (z.B. vom Desktop) geöffnet wird, dann soll natürlich die GUI starten, aber genau das passiert nicht, weil das Application Objekt (Die Excel Instanz in der die Arbeitsmappe geöffnet wird) die Eigenschaft Visible = False hat und ich mir nicht erklären kann woran das liegt.
Bei meinen bisherigen Nachforschungen habe ich folgende Erkenntnisse gesammelt:
- Wenn zuerst die Abfrage "Inhalt aktivieren" kommt startet die GUI
- Wenn ein anderes Excel Dokument geöffnet ist, startet die GUI
- Wenn ich zuerst Excel öffne und dann über den Datei öffnen Dialog das Dokument öffne, startet die GUI
Nur eben nicht wenn das Dokument direkt per Doppelklick geöffnet wird.
Private Sub Workbook_Open()
If Application.Visible Then
'Start GUI
End If
End Sub
Ich hoffe ich habe dieses Phänomen nun deutlich genug dargestellt. Ich selber versuche schon eine gefühlte Ewigkeit herauszufinden woran das liegen könnte, mir gehen jedoch die Ideen aus.
MfG
Andreas

Anzeige
AW: Von was redest du eigentlich?
07.03.2014 17:46:53
Andreas
OK,
so langsam verstehe ich warum ihr mich alle nicht verstehen wollt :-).
Ich habe das Problem eben versucht auf meinem Notebook nachzustellen, ohne Erfolg. Das Application Objekt ist immer von Anfang an Sichtbar. Deshalb gehe ich davon aus, das es mit der Umgebung ( OS, Office, ....) zusammenhängt.
Das System auf dem es nicht funktioniert war ein W7 64 Bit, Office 2010.
Diese NB ist ein W 8.1 mit Office 2013.
Hat einer von euch schon eine Vermutung oder eine Idee woran es liegen könnte?
MfG
Andreas

AW: Was heisst Excel mit dem Code öffne,,,
07.03.2014 12:18:38
Andreas
Hallo Hansueli,
das Dokument (Die Arbeitsmappe) öffne ich per Doppelklick. Wenn bereits eine andere Mappe geöffnet ist oder das Dokument noch nicht als Vertrauenswürdig eingestuft ist, habe ich auch jeweils die Ausgaben True, True. Wenn jedoch noch keine andere Mappe geöffnet ist, wird das Application Objekt erst nach dem Anzeigen der ersten Messagebox sichtbar.
Wenn das Dokument per VBA- oder VB-Code aufgerufen wird in der das Application Objekt auf Visible=True gesetz wird ist alles in Ordnung.
Der "Fehler" (Dieses Verhalten) tritt nur auf, wenn ich das Dokument direkt öffne und noch kein anderes Dokument (kein Excel) geöffnet ist.
Gruß
Andreas
Anzeige

270 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige