| |
 | 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 (3218 mal gelesen)
|
JoKurt87 Mitglied Student E-Technik

 Beiträge: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 1361 Registriert: 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 1361 Registriert: 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 1361 Registriert: 13.02.2003 .
|
erstellt am: 15. Nov. 2013 22:15 <-- editieren / zitieren --> Unities abgeben:          Nur für JoKurt87
|
startrek Moderator Architekt
   
 Beiträge: 1361 Registriert: 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: 1049 Registriert: 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk AutoCAD 2014 mit VBA Modul
|
erstellt am: 16. Nov. 2013 19:35 <-- editieren / zitieren --> Unities abgeben:         
|
JoKurt87 Mitglied Student E-Technik

 Beiträge: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 1049 Registriert: 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 1049 Registriert: 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 1049 Registriert: 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: 2812 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 2812 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 2812 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 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üße Klaus 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: 37 Registriert: 08.11.2013 AutoCAD-Anfaenger Autodesk 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: 2812 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 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 |