|  |  | 
|  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | 
|  |  | 
|  | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung 
 | 
| Autor | Thema:  Userform automatisch oeffnen (3390 mal gelesen) | 
 | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 15. Nov. 2013 20:48  <-- editieren / zitieren -->    Unities abgeben:            
  Hallo Helfende, ich habe ein Userform erstellt, welches sich nach Oeffnen einer Zeichnung automatisch mit oeffnen soll. Um das zu realisieren, habe ich im VBA Editor auf "ThisDrawing" doppelt geklickt und habe folgendes dort stehen: Code:Private Sub AcadDocument_Activate()
     UserForm_Workorder.show End Sub 
 Das ganze funktioniert auch. Auf der Userform habe ich einen Button platziert, der die Userform beenden soll, mit: Code:Private Sub CommandButton_Quit_Click()
     End End Sub 
 Das funktioniert auch. Allerdings wird die Userform nur kurz geschlossen und sofort wieder geoeffnet, sobald ich auf "Quit" geklickt habe. Ein weiter Klick auf "Quit" schliesst sie dann endgueltig.Was mache ich falsch?
  PS: Die Userform heisst eigentlich "UserForm_WorkOrder". Also mit grossem O. In dem obigen Code wird das O allerdings automatisch klein geschrieben. Liegt das daran, dass die Userform einmal diesen Namen hatte? ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | startrek Moderator
 Architekt
 
     
 
      Beiträge: 1361Registriert: 13.02.2003
 . |    erstellt am: 15. Nov. 2013 21:37  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 15. Nov. 2013 21:44  <-- editieren / zitieren -->    Unities abgeben:            
  Danke fuer die relative schnelle Hilfe. Sie war allerdings nicht von Erfolg gekroent. Ich hab "End" durch "Unload.me" ersetzt. Es passiert immernoch das gleiche, allerdings kommt jetzt eine Fehlermeldung hinzu, durch die das Programm kurz unterbrochen wird. Dann lasse ich es weiter laufen und die Userform oeffnet sich erneut (wie beschrieben) und der Fehler tritt wieder auf. ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | startrek Moderator
 Architekt
 
     
 
      Beiträge: 1361Registriert: 13.02.2003
 . |    erstellt am: 15. Nov. 2013 21:53  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 15. Nov. 2013 21:59  <-- editieren / zitieren -->    Unities abgeben:            
  Sry, dass ich zu schnell war.    Die Fehlermeldung ist dadurch wieder weg. Das Problem, dass sich die Userform zweimal oeffnet, wurde aber trotzdem nicht behoben.       ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | startrek Moderator
 Architekt
 
     
 
      Beiträge: 1361Registriert: 13.02.2003
 . |    erstellt am: 15. Nov. 2013 22:15  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   | 
                        | startrek Moderator
 Architekt
 
     
 
      Beiträge: 1361Registriert: 13.02.2003
 . |    erstellt am: 15. Nov. 2013 22:44  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
  Also ich habs jetzt mal probiert, bei mir erscheint die UF beim Öffnen und Schliessen der Datei, wenn ich mit 'Activate' agiere. Bin da erstmal raus, weil aktuell auf nem win2kprof mit ADT05 unterwegs, also uralt. Das gilt nicht nur meiner Hard-/Software, sondern auch meinem Kopf ... also lass Dich da nicht durch das 'Mod'-Label beeindrucken    )))) [Edit: Vielleicht möchtest Du noch etwas näher beschreiben, was Du machen willst bzw. mit welchem Code,alternativ eine *.dvb hochladen /Edit]
 lg trekkie 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Ingenieur Studio HOLLAUS Mitglied
 CAD / CAFM / GIS Beratung-Programmierung-Schulung
 
     
 
      Beiträge: 1049Registriert: 06.11.2008
 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)RKV .... CAFM+mehr
 HMap ... Vermessung und Verkehr
 OoC .... Raumplanung
 CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
 |    erstellt am: 16. Nov. 2013 02:11  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
 Zitat:ich habe ein Userform erstellt, welches sich nach Oeffnen einer Zeichnung automatisch mit oeffnen soll
 
 .Activate ist der Event, der nicht das Öffnen, sonderen die Aktivierung einer Zeichnung überwacht, also auch jeder Wechsel zwischen Zeichnung A und Zeichnung B löst den Eventhandler aus. Probier diesen Code, einmalig muss die Sub "Initialize" ausführt werden, ab dann wird jedes DWG-Öffnen überwacht. Private WithEvents pAcadApp As AcadApplication Code:Public Sub Init()
 'einmalig ausfuehren, damit das Eventhandling aktiviert wird.
 Set pAcadApp = ThisDrawing.Application
 End Sub
 Private Sub pAcadApp_EndOpen(ByVal FileName As String)
 Debug.Print ThisDrawing.Name
 'hier darf das Form gestartet werdne
 End Sub
 
 ------------------
   
   www.cars4fun.at
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 16. Nov. 2013 19:35  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 18. Nov. 2013 14:24  <-- editieren / zitieren -->    Unities abgeben:            
  @HOLLAUS: Danke fuer den Versuch, nur bringt mir deine Hilfe so gar nichts. Es waere nett gewesen, du haettest dazugeschrieben wo was hinkommt. Es gibt kein Ereignis "EndOpen" und was ist mit der Zeile "Privat WithEvents...", ist die wichtig oder warum steht die da???    Ein bisschen mehr Erklaerung und Struktur hilft mir sicherlich weiter.    @all:Da nach der Funktion meines Programms gefragt wurde: Ich habe eine Zeichnung, ein Typen-/Leistungsschild. Dieses muss mit Daten aus einer
 Excel Tabelle gefuellt werden. Sobald die Daten drin sind, wird es markiert und sooft dupliziert, wie es die Anzahl an Seriennummern, die in einer Textdatei gespeichert sind, vorgibt. Es wird sozusagen markiert, kopiert und neben dem Original wieder eingefuegt. Warum: Die Schilder werden dann mit einer Lasermaschine auf Edelstahl gelasert. Diese Maschine funktioniert wie ein Drucker mit einem bedruckbaren Bereich von 24" auf 12", sodass max. 4 Schilder horizontal und 7 vertikal aufs Layout passen. Ist die entsprechende Anzahl an Schildern auf dem Layout, wird in jedes die Seriennummer eingetragen, welche ich nicht mitkopieren kann, weil sie bei jedem Schild um 1 erhoeht wird, logisch.
 Ich weiss zwar nicht wofuer das wichtig ist, in Bezug auf mein Problem, aber ihr habt danach gefragt, also bekommt ihr auch die Antwort.
    Damit dem Benutzer das spaetere Benutzen leichter faellt, will ich erreichen, dass sich bei Oeffnen der eintsprechenden Zeichnung, von denen es mehrere gibt, da es auch mehrere Schilderarten gibt, das Programm automatisch startet und nur noch die Auftragsnummer eingegeben werden muss. Dabei hab ich auch noch ein anderes Problem, aber dafuer eroeffne ich ein neues Thema...
 So ich hoffe das war jetzt ausfuehrlich genug.   MfG JoKurt87 ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Ingenieur Studio HOLLAUS Mitglied
 CAD / CAFM / GIS Beratung-Programmierung-Schulung
 
     
 
      Beiträge: 1049Registriert: 06.11.2008
 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)RKV .... CAFM+mehr
 HMap ... Vermessung und Verkehr
 OoC .... Raumplanung
 CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
 |    erstellt am: 18. Nov. 2013 14:32  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
 Zitat:Es waere nett gewesen, du haettest dazugeschrieben wo was hinkommt
 
 In das Modul 'ThisDrawing"' .. und ja, die Zeile mit Code:Private WithEvents pAcadApp As AcadApplication
 
  hätte in den Code-Bereich hineingehört, sorry. Und der Rest steht als Kommentar dabei, die erste Sub Init  muss einmalig manuell gestartet werden, damit wird die Variable pAcadApp  initialisiert und damit gleich auch der Eventhandler pAcadApp_EndOpen . Ab dann wird bei jedem abgeschlossenen Open-Vorgang diese Eventhandler angesprochen. ------------------
   
   www.cars4fun.at
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 18. Nov. 2013 15:31  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | Ingenieur Studio HOLLAUS Mitglied
 CAD / CAFM / GIS Beratung-Programmierung-Schulung
 
     
 
      Beiträge: 1049Registriert: 06.11.2008
 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)RKV .... CAFM+mehr
 HMap ... Vermessung und Verkehr
 OoC .... Raumplanung
 CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
 |    erstellt am: 18. Nov. 2013 15:39  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 18. Nov. 2013 15:55  <-- editieren / zitieren -->    Unities abgeben:            
  Das habe ich vermutet, nur will ich genau das nicht! Das meinte ich ja damit, dass der Benutzer des Programms nur die Zeichnung oeffnen muss und mehr nicht. Ich dachte, das geht vielleicht irgendwie.     Trotzdem danke fuer deine Muehe! ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | Ingenieur Studio HOLLAUS Mitglied
 CAD / CAFM / GIS Beratung-Programmierung-Schulung
 
     
 
      Beiträge: 1049Registriert: 06.11.2008
 Autocad 2 bis Autocad 2020 (+Map3D, +Civil3D, +Infraworks)RKV .... CAFM+mehr
 HMap ... Vermessung und Verkehr
 OoC .... Raumplanung
 CBox ... Tools für AutoCAD und BricsCAD (kostenfrei)
 |    erstellt am: 18. Nov. 2013 16:57  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   | 
                        | KlaK Ehrenmitglied V.I.P. h.c.
 Dipl. Ing. Vermessung, CAD- und Netz-Admin
 
 
  
 
      Beiträge: 2880Registriert: 02.05.2006
 AutoCAD LandDesktop R2 bis 2004Civil 3D 2005 - 2025
 Plateia, Canalis
 Visual Basic
 |    erstellt am: 18. Nov. 2013 17:24  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
 Zitat:Original erstellt von JoKurt87:
 
 Ich weiss zwar nicht wofuer das wichtig ist, in Bezug auf mein Problem, aber ihr habt danach gefragt, also bekommt ihr auch die Antwort.
    
 
 Ja, das ist schon wichtig   Du könntest Dir z.B. den ganzen Zinnober mit activate / init sparen, wenn Du nach der Eingabe in der Exceltabelle, das Autocad mit der richtigen Zeichnung gleich von Excel aus aufrufst, die Einstellungen machen lässt und gleich an den Drucker schickst. Könnte sogar alles im Hintergrund geschehen ohne das der Anwender Autocad überhaupt sieht.
 (Nur mal so zur Anregung)
 
 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 18. Nov. 2013 17:46  <-- editieren / zitieren -->    Unities abgeben:            
  @KlaK: Danke fuer die Anregung, aber leider hast du mich ein bisschen falsch verstanden. In die Exceltabelle wird nichts eingetragen und darf auch nicht!!! Sie ist schon fertig. Ich muss nur auf sie zugreifen, um die Nenndaten fuer das Schild auszulesen, aber keinesfalls etwas darin aendern! Von daher ist der Weg den ich gehe, der einzig moeglich und auch der, den ich gehen soll: - in Userform vom Benutzer die Auftragsnummer eingeben- eine vorgegebene Textdatei (traegt den Namen der Auftragsnummer) auslesen > Anzahl der Schilder, Seriennummern, Katalognummer
 - in vorgegebener Exceltabelle nach der Katalognummer suchen
 - ist die Reihe mit der Katalognummer gefunden, alle relevanten Zellen in der Reihe auslesen und Werte darin in der Zeichnung an die richtige Stelle einfuegen
 - Zeichnung markieren, und sooft duplizieren, wie es die Anzahl vorgibt
 - Seriennummern in die Duplikate einfuegen
 Nachdem die Auftragsnummer eingegeben wurde, laufen alle folgenden Schritte im Hintergrund automatisch ab. Der Benutzer muss dann nur noch drucken. Wenn das bisher nicht klar war, dann jetzt, hoffe ich!    Denke, jetzt ist es wirklich ausfuehrlich genug erklaert.   Auch wenn das vllt umstaendlich erscheint, aber so soll es funktionieren. Wie gesagt, ist ja auch nicht relevant fuer mein Problem. ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | KlaK Ehrenmitglied V.I.P. h.c.
 Dipl. Ing. Vermessung, CAD- und Netz-Admin
 
 
  
 
      Beiträge: 2880Registriert: 02.05.2006
 AutoCAD LandDesktop R2 bis 2004Civil 3D 2005 - 2025
 Plateia, Canalis
 Visual Basic
 |    erstellt am: 18. Nov. 2013 18:26  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
  Wer Aufträge in einer Textdatei speichern möchte ...     Üblicherweise hab ich das in einer Datenbank, aus der dann die wichtigen Sachen gelesen werden.Aber egal, vielleicht wäre es für Dich ja ein Weg eine Zeichnung mit einem eingebetteten Projekt aufzurufen ...
 Grüße,Klaus
   Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 18. Nov. 2013 19:06  <-- editieren / zitieren -->    Unities abgeben:            
  Ja eine Datenbank mag sinnvoller sein, aber erstens kann ich das nicht aendern und zweitens steht das ja auch nicht zur Debatte. Genau deswegen empfand ich die Erklaerung meines Programms fuer unnoetig. Sowas loest immer nur Diskussionen darueber aus, wie sinnvoll etwas ist oder nicht ist. Es ist halt nunmal so und fertig. Wichtiger ist, dass ich mein Problem loese. Was meinst du mit eingebettetem Projekt? Wenn du das Einbetten des Projekts, also meines Programms, in die Zeichnung im VBA Manager meinst, dann hab ich das bereits getan. ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | KlaK Ehrenmitglied V.I.P. h.c.
 Dipl. Ing. Vermessung, CAD- und Netz-Admin
 
 
  
 
      Beiträge: 2880Registriert: 02.05.2006
 AutoCAD LandDesktop R2 bis 2004Civil 3D 2005 - 2025
 Plateia, Canalis
 Visual Basic
 |    erstellt am: 19. Nov. 2013 09:36  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
  Dann verstehe ich Dich auch nicht mehr      Brauchst doch nur noch die sub AcadDocument_Activate() in ThisDrawing anlegen ... Beiliegend ein Beispiel, das bei Zeichnungsaufruf das Fenster startet. Mit Ende wird es wieder geschlossen und der Zugriff auf die Zeichenelemente freigegeben. (Makros müssen aktiviert sein)
 GrüßeKlaus
   PS.: .txt bitte im Dateinamen entfernen
 [Diese Nachricht wurde von KlaK am 19. Nov. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                        | JoKurt87 Mitglied
 Student E-Technik
 
  
 
      Beiträge: 37Registriert: 08.11.2013
 AutoCAD-AnfaengerAutodesk AutoCAD 2014 mit VBA Modul
 |    erstellt am: 19. Nov. 2013 13:56  <-- editieren / zitieren -->    Unities abgeben:            
 Zitat:Original erstellt von KlaK:
 Dann verstehe ich Dich auch nicht mehr
   Brauchst doch nur noch die sub AcadDocument_Activate() in ThisDrawing anlegen ... 
 Lies bitte mal meinen aller ersten Post... Genau das funktioniert ja nicht richtig.Und deine .dwg.txt kann ich nicht oeffnen, lad sie doch als .dwg hoch, wieso erst noch das .txt... (Ja ich hatte das .txt vor dem oeffnen entfernt...
  ) ------------------shit's getting real:
 (sqrt(-shit))^2 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | KlaK Ehrenmitglied V.I.P. h.c.
 Dipl. Ing. Vermessung, CAD- und Netz-Admin
 
 
  
 
      Beiträge: 2880Registriert: 02.05.2006
 AutoCAD LandDesktop R2 bis 2004Civil 3D 2005 - 2025
 Plateia, Canalis
 Visual Basic
 |    erstellt am: 19. Nov. 2013 14:14  <-- editieren / zitieren -->    Unities abgeben:           Nur für JoKurt87   
  dwg können hier nicht hochgeladen werden, höchstens als zip-Archiv Aber es funktioniert auch so. Wenn Du die Datei heruntergeladen hast, markiere sie und gehe auf F2, dann sollte dort "JoKurt.dwg.txt" zu sehen sein
 Dann kannst Du das .txt entfernen und mit Enter bestätigen.
 Normal kommt dann die Abfrage das die Datei unbrauchbar werden könnte -> ignorieren
 Sollte es nicht klappen, in den Explorer-OrdnerOptionen-Ansicht die [ ] Erweiterung bei bekannten Dateitypen ausblenden
 deaktivieren (ist sowieso sinnvoller ... )
 [Diese Nachricht wurde von KlaK am 19. Nov. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |