Microsoft Excel

Herbers Excel/VBA-Archiv

Laden von userform unterbinden


Betrifft: Laden von userform unterbinden
von: Sandro L
Geschrieben am: 01.12.2018 20:45:52

Hallo euch allen!

Habe folgendes Problem:

ich habe ein kleines Tool geschrieben bestehend aus zwei Excel Mappen.
Ich habe alles so programmiert das der Anwender später nur die Userform zu Gesicht bekommt und die Excel Mappe an sich komplett verborgen ist damit der Endanwender später (nicht ich) nicht versehentlich irgendwas verschiebt und dann mein Code nicht mehr funktioniert.
Kurze Erklärung zur funktionsweise:
Endwanwender1 öffnet Mappe1 die eine Userform ist, die beim öffnen automatisch gestartet wird, in der man Daten eingeben kann und diese werden dann in Mappe2 übertragen und dort gespeichert.
In Mappe2 befindet sich auch eine Userform (diese wird auch beim öffnen der Mappe automatisch gestartet) die dann Endanwender2 erlaubt die Daten auszulesen und weiter zu verarbeiten.

Nun zu meinem Problem:
Gezwungenermaßen muss Mappe1 während sie die Daten überträgt natürlich Mappe2 im Hintergrund öffnen.
Da allerdings in Mappe2 die Userform im "autostart" drin ist öffnet sich diese jedesmal wenn Endanwender1 Daten einspeichert.
Gibt es eine Möglichkeit dies zum umgehen?
Ich bin schon auf die Idee gekommen eine dritte Datei ohne vba zu erstellen in die dann Mappe1 schreibt und Mappe2 die Daten raus holt allerdings hieße das, dass ich Mappe2 komplett umschreiben müsste.
Mir wäre es arg lieb wenn es da eine andere Lösung gäbe, mit der ich zum Beispiel beim einfügen der Daten das Ausführen von vba in Mappe2 unterbinden könnte.

Danke schonmal im vorraus für eure Tipps!

  

Betrifft: AW: Laden von userform unterbinden
von: Luschi
Geschrieben am: 01.12.2018 21:37:01

Hallo Sandro L,

ich mache das immer so:
- in Mappe1.xlsm setze ich eine Boolsche Variable auf 'False'
- dann öffne ich Mappe2.xlsm
- im Autostart-Mmakro dieser Mappe starte ich per Application.Run ein Makro,
  daß den Wert dieser Variablen aus Mappe1.xlsm abholt
- und erst dann wird im True-Fall die Userform geöffnet oder eben nicht.

Gruß von Luschi
aus klein-Paris



  

Betrifft: AW: Laden von userform unterbinden
von: Sandro L
Geschrieben am: 02.12.2018 00:22:58

Hallo Luschi,

erstmal danke für den tipp, leider komme ich heute abend nicht mehr dazu ihn zu testen werde ihn aber morgen mal versuchen.
Allerdings weiß ich noch nicht wirklich wie der code aussehen soll in Mappe2 könntest du mir ein Beispiel zeigen?
Außerdem wenn ich nur mappe2 öffne soll sich ja die userform öffnen, wenn ich da ne abfrage nach dem bool wert aus mappe1 habe der ja false ist wird er doch die userform nicht laden oder?

Danke für deine Hilfe!


  

Betrifft: AW: Laden von userform unterbinden
von: Luschi
Geschrieben am: 02.12.2018 06:26:55

Hallo Sandro L,

auch das ist kein Problem (Mappe2 alleine öffnen)
- in Autostart noch eine Prüfung, ob Mappe2 geöffnet ist
- wenn mein, Userform öffnen
- wenn ja, mit Application.Run Wert der Variablen aus Mappe1.xlsm abfragen
- und dann je nach Wert Userform öffnen ja oder nein

Mache ein einfaches Beispiel mit den beiden Mappen und ich helfe Dir gern.

Gruß von Luschi
aus klein-Paris


  

Betrifft: AW: Laden von userform unterbinden
von: Luschi
Geschrieben am: 02.12.2018 06:32:50

Hallo Sandro L,

auch das ist kein Problem (Mappe2 allein zu Haus)
- in Autostart von Mappe2.xlsm eine zusätzliche Abfrage, ob Mappe1-xlsm geoffnet ist
- wenn nein: Userform öffnen
- wenn ja, mit Application.Run Wert der gesetzten #Variable aus Mappe1.xlsm holen
- und dann bei False Userform nicht öffnen
  oder bei True Userform öffnen

Mache ein einfachstes Beispiel mit den beiden Mappen und der Userform in Mappe2.xlsm.
Dann helfe ich gern weiter.

Gruß von Luschi
aus klein-Paris



  

Betrifft: AW: Laden von userform unterbinden
von: Sandro L
Geschrieben am: 02.12.2018 12:48:22

Hallo Luschi,

vielen Dank dein Tipp mit der Boolschen Variablen hat mich auf den richtigen Weg gebracht :)

Habe in Mappe2 in die Sub Workbook_open einfach ne überprüfung eingebaut ob Mappe1 offen ist und wenn dies der Fall ist keine Userform zu laden. Klappt jetzt super und man kann mit Mappe1 Daten in Mappe2 einfügen ohne dass Mappe2 Ihre Userform startet.
Außerdem habe ich die Boolsche Variable direkt in Mappe2 eingebaut womit ich nichts an Mappe1 ändern musste :)

Hier noch der Code den ich jetzt drin habe für andere suchende :)

Option Explicit

Private Sub Workbook_Open()

    Dim sPfad As String
    sPfad = ThisWorkbook.Path & "\Mappe1.xlsm" ' Diesen Pfad anpassen!
    If DateiGeoeffnet(sPfad) = False Then
    
Application.WindowState = xlMinimized
Application.Visible = False

    With frmMaske
        
        .MultiPage1.Value = 0 'Multipage Seite 1 gewählt
        .Show
    End With
    End If

End Sub



Private Function DateiGeoeffnet(DerPfad As String) As Boolean
    On Error Resume Next
    Open DerPfad For Binary Access Read Lock Read As #1
    Close #1
    If Err.Number <> 0 Then
        DateiGeoeffnet = True
        Err.Clear
    End If
End Function
Vielen Dank nochmal! Dieses ist ein super Forum und bisher habe ich zu jeder meiner Fragen einen sehr guten Lösungsansatz bekommen!

Wünsche euch allen noch einen schönen Sonntag!