Autor
|
Thema: SolidWorks - VB - bei speichern unter nur den Ordner wählen (3307 mal gelesen)
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2537 Registriert: 02.10.2006
|
erstellt am: 27. Feb. 2012 00:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin gerade dabei, für SolidWorks ein neues Makro zu erstellen. Unter anderem möchte ich viele erstellte Tif-Bilder abspeichern. Dazu möchte ich vorab den Ordner auswählen, in den alle Dateien gespeichert werden sollen. Momentan habe ich eine funktionierende Routine, die mir den Speicherndialog aufruft, indem ich zwar den gesuchten Ordner (Pfad) auswählen kann, aber auch ein Dateiname erwartet wird. Das Ergebniss seht ihr in dem dritten Bild. In den beiden ersten Bildern ist der betreffende Code enthalten. Wie bekomme ich nun den richtigen Speichern-Unter Dialog zu sehen, indem nur der Pfad gewählt wird? Besten Dank vorab für die Hilfe. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 27. Feb. 2012 09:03 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2537 Registriert: 02.10.2006
|
erstellt am: 27. Feb. 2012 22:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Stefan, bist mal wieder Omnipresent. Der Schnipsel darf dir natürlich bekannt vorkommen, ist er doch aus deinem Makro savequalitybitmap.swp. Auch im restlichen Makro (entstanden aus Assembly-Print-Drawings) sind wesentliche Teile auch aus Makros von dir enthalten. Habe dich aber ausdrücklich als Hilfesteller erwähnt, zu Plagiatszeiten mehr als angebracht. Besten Dank für den Tip, habe es nach einigem rumprobieren wie gewünscht hinbekommen. Allerdings habe ich noch einen Fehler, den ich nicht einordnen kann. (siehe Bild) Wenn ich die folgende Zeile auskommentiere, funktioniert alles wunderbar. .hOwner = Me.hwnd Ist diese Definition für was bestimmtes, auf das ich verzichten kann? Und wenn ich nicht drauf verzichten kann, wie bekomme ich diesen Fehler weg? Übrigens, wenn dieses Makro fertig ist, werde ich es im SW-Forum veröffentlichen. Nimmst du eigentlich noch Makros in deiner Markro-Tauschbörse auf? Da ist es in letzter Zeit ziemlich Still geworden. Ich denke, dass Assembly-Print-Drawings inzwischen stabil läuft, um dort aufgenommen werden zu können. Nochmals Danke für alles, Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Ehrenmitglied V.I.P. h.c. IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 28. Feb. 2012 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
Hallo Andi, Zitat: Original erstellt von Andi Beck: Besten Dank für den Tip, habe es nach einigem rumprobieren wie gewünscht hinbekommen. Allerdings habe ich noch einen Fehler, den ich nicht einordnen kann. (siehe Bild) Wenn ich die folgende Zeile auskommentiere, funktioniert alles wunderbar. .hOwner = Me.hwndIst diese Definition für was bestimmtes, auf das ich verzichten kann?
Also so wirklich wissen tu ich das auch nicht, nach der Beschreibung auf http://www.vbarchiv.net/faq/allg_hwnd.php und den Kommentaren bei dem Beispiel würde ich sagen ist es nicht gefährlich, den wegzulassen. Das Problem ist, dass du über VBA (im Gegensatz zu VB6) keine hwnd-Eigenschaften deiner Controls bzw. des Formulars bekommst; wenn du das trotzdem wasserdicht machen willst kannst du mal im Beitrag VBA: Window-Handle eines Controls ermitteln schauen, dass du per Windows API die hWnd des Formulars rausbekommst. Zitat: Original erstellt von Andi Beck: Nimmst du eigentlich noch Makros in deiner Markro-Tauschbörse auf? Da ist es in letzter Zeit ziemlich Still geworden.
Ja und ja Auf der Hilfeseite ist es so still geworden, weil die Notwendigkeit nicht mehr so gegeben ist wie vor 5 oder gar 10 Jahren. Du findest heute an allen Ecken und Enden im Internet auch deutschsprachige Infos, Tipps, Tricks usw. zu SolidWorks und drumherum. Die aktuelle Entwicklungsrichtung von SolidWorks stimmt mich auch nicht gerade enthusiastisch, um weiter an "vorderster Front" mitzumischen, was einige von den anderen Bloggern und Webmastern noch machen - aber auch da haben viele von der "alten Garde" aufgehört. Aus den Weblogs konnte ich sehr gut sehen, wie die Hilfeseiten genutzt werden, da ist mit Abstand die Bibliothek und die Makros das, was auch heute noch stark genutzt wird. Die Knowhowseiten oder gar FAQs hatte ich wohl mehr zu meinem Privatvergnügen gemacht, die wurden sehr wenig bis gar nicht genutzt. Da ist aber auch der offizielle Bereich des Supports bei den Vertriebspartnern und bei SolidWorks selbst wesentlich besser geworden und es gibt mittlerweile einige gute deutschsprachige Bücher ( @Ralf ), hoffentlich liegt es da dran. Hier im Brett läuft es aber weiterhin bestens, es gibt in meinen Augen kein besseres deutschsprachiges Forum im allgemeinen zu CAD und zu SolidWorks im Besonderen - ich persönlich finde es sogar besser als die englischsprachigen, auch die SolidWorks eigenen, aber das ist Geschmackssache. Auf meiner Seite diese Infos aber zu aggregieren, um suchfaule Leute auch noch zu füttern, diese Vorstellungen hatte ich nie von meiner Seite. Das sollte nie eine Enzyklopädie werden, sondern immer eine Stelle, an der Hilfe zur Selbsthilfe geboten wird. Deswegen ist es auf der Hilfeseite ruhig geworden, aber ich bin weiter hier im Brett regelmäßig präsent. Ich nehm allerdings immer noch gerne Makros, Beispiele, auch gerne außergeöhnliche Modelle oder Knowhowartikel. Wobei Modell in meinen Augen besser auf http://www.3dcontentcentral.com oder http://grabcad.com/ aufgehoben sind, und für Knowhowartikel haben wir hier auf CAD.de mittlerweile das Dokumente Brett Aber für Makros, gerade was deutsche Oberfläche angeht, ist die MakroMania und die Makro-Tauschbörse immer noch eine der guten Adressen (hier im Brett ist auch viel, aber manchmal schwer zu finden), also nehm ich da gerne, was angeboten wird. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2537 Registriert: 02.10.2006
|
erstellt am: 29. Feb. 2012 01:09 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Stefan Berlitz: schauen, dass du per Windows API die hWnd des Formulars rausbekommst.
Hallo Stefan, besten Dank für deine umfangreiche Antwort. Also, als Schnipselflederer habe ich nun diesen Teil eingefügt, wobei ich schon gar nicht verstehe, worum es hier überhaupt geht. Wie du im Bild siehst, lasse ich mir über eine MsgBox das Ergebnis anzeigen. Es werden mir ständig wechselnde Zahlen (z.B. 1712430) zurückgegeben. Du schreibst, ich soll die hWnd des Formulars rausbekommen. hWnd = Control2hWnd(cmdDesiredFolderName) --- ist der aufrufende CommandButton und funktioniert hWnd = Control2hWnd(txtDesiredFolderName) --- ist die TextBox in die der Pfad eingetragen wird und funktioniert hWnd = Control2hWnd(frmSfInfo) --- ist die UserForm und funktioniert nicht Ich nehme mal an, das die erste Variante die richtige ist, die eigentlich benötigt wird, ja? Auf jeden Fall kommt bei .hOwner = hWnd dann keine Fehlermeldung mehr. --------------------------------------------- Zitat: Ich nehm allerdings immer noch gerne Makros, Beispiele, auch gerne außergewöhnliche Modelle oder Knowhowartikel. ---------------------------------------------
Das freut mich allerdings, weil auch ich immer wieder dort reinschaue. Dann werde ich wohl demnächst eine Bedienungsanleitung etc. für Assembly-Print-Drawings schreiben und dir schicken. Mal sehen wie dieses neue Makro Assembly-Safe-TIF wird, und wenn es dazu Bedarf gibt, dann auch dieses. Der Rest ist, glaube ich, nicht mehr so schwer, reine Fleißaufgabe. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lennykanndasnich Mitglied CAD Administrator
Beiträge: 6 Registriert: 19.12.2012 SWX 2011 DBWorks
|
erstellt am: 19. Dez. 2012 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
hallo, auch wenn dein Problem schon gelöst scheint. Hab hier noch einen Ansatz für dich: Einfach mit deinem Ordnersuchbutton dieses sub ansprechen und es öffnet sich ein Auswahldialog. Sub ordnerauswahl() Dim AppShell As Object Dim BrowseDir As Variant Dim Pfad As String
Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17) 'mit &H1000 kannst du Ordner aufrufen mit &H2000 Drucker usw. On Error Resume Next Pfad = BrowseDir.items().Item().Path If Pfad = "" Then Exit Sub MsgBox Pfad '<<<<<<hier übergibst du deinen Pfad einfach z.B. deiner textbox mit: Textbox.text=Pfad On Error GoTo 0 End Sub ------------------ ---------------------- nur ein automatisierter Prozess ist ein guter Prozess... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000
|
erstellt am: 21. Dez. 2012 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2537 Registriert: 02.10.2006 Firma: SW 2021-5.1 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2021-5.1 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 17. Mrz. 2013 15:22 <-- editieren / zitieren --> Unities abgeben:
Hallo Lenny, auch wenn ich deinen Code damals noch nicht getestet hatte, nahm ich ihn dennoch zur Kenntnis. Ich war froh, dass mein Problem gelöst war und hab es erst mal dabei belassen. Nun musste ich mein Makro für SW2013 umprogrammieren, da unter anderem auch die obere Routine nicht mehr funktionierte, Stichwort 64 Bit. Da habe ich mich an deinen Vorschlag erinnert und siehe da, er funktioniert einwandfrei. Und er ist auch noch viel Kürzer und Übersichtlicher. Ü´s sind erneut Unterwegs. Besten Dank und Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lennykanndasnich Mitglied CAD Administrator
Beiträge: 6 Registriert: 19.12.2012
|
erstellt am: 17. Mrz. 2014 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
Hi, auch wenn das jetzt vielleicht etwas spät kommt hier die Antwort darauf wie man dem ganzen einen Startpfad mitgibt. Sub ordnerauswahl() Dim AppShell As Object Dim BrowseDir As Variant Dim Pfad As String Dim strStartPath As String strStartPath = "C:\temp"
Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, (strStartPath)) On Error Resume Next Pfad = BrowseDir.items().Item().Path If Pfad = "" Then Exit Sub MsgBox Pfad '<<<<<<hier übergibst du deinen Pfad einfach z.B. deiner textbox mit: Textbox.text=Pfad On Error GoTo 0 End Sub ------------------ ---------------------- nur ein automatisierter Prozess ist ein guter Prozess... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KMassler Ehrenmitglied V.I.P. h.c. CAD Admin + Mädchen für Alles...
Beiträge: 2657 Registriert: 06.11.2000 SolidWorks Start 1999 ** CSWP 01/2008 ** Dell Precision 7540 mobile Workstation, 64GB, Quadro RTX 3000; SWX2020 SP5; SAP/PLM+ECTR; DriveWorks Pro; Programmierung: VBA, aktuell Visual Studio 2017/VB.Net
|
erstellt am: 18. Mrz. 2014 16:46 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
|
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2537 Registriert: 02.10.2006
|
erstellt am: 18. Mrz. 2014 18:10 <-- editieren / zitieren --> Unities abgeben:
Hallo, kann mich Klaus nur anschließen. Wenn alles so überschaubar wäre, tät Programmieren doppelt Spaß machen. Bin mal gespannt, ob Lenny in (genau) einem Jahr noch was ergänzen kann. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lennykanndasnich Mitglied CAD Administrator
Beiträge: 6 Registriert: 19.12.2012 SWX 2011 DBWorks
|
erstellt am: 19. Mrz. 2014 09:23 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
ich hab noch einen... Sub ordnerauswahl() Dim AppShell As Object Dim BrowseDir As Variant Dim Pfad As String
Set AppShell = CreateObject("Shell.Application") Set BrowseDir = AppShell.BrowseForFolder(0, "Ordner auswählen", &H1000, 17) 'wenn man die 17 durch eine Zahl siehe unten austauscht bekommt man das Ziel was ich beschrieben habe '16 Desktop '17 Computer '39 Eigene Bilder '5 Eigene Dokumente '13 Eigene Musik '14 Eigene Videos '40 Userdateien '23 Programme '46 userdaten auf C: '33 Cookies '31 Favoriten On Error Resume Next Pfad = BrowseDir.Items().Item().Path If Pfad = "" Then Exit Sub MsgBox Pfad '<<<<<<hier übergibst du deinen Pfad einfach z.B. deiner textbox mit: Textbox.text=Pfad On Error GoTo 0 End Sub ------------------ ---------------------- nur ein automatisierter Prozess ist ein guter Prozess... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2537 Registriert: 02.10.2006
|
erstellt am: 19. Mrz. 2014 18:45 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Lennykanndasnich: ich hab noch einen...
wie, ist schon wieder ein Jahr rum? Wie die Zeit vergeht. Lenny, bist du dir sicher, dass du technischer Zeichner bist und nicht Programmierer? Wieder eine schöne Variante. Hoffentlich denk ich an diesen Schnipsel, wenn ich ihn einmal brauchen sollte. Grüße, Andi
------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lennykanndasnich Mitglied CAD Administrator
Beiträge: 6 Registriert: 19.12.2012 SWX 2011 DBWorks
|
erstellt am: 20. Mrz. 2014 09:01 <-- editieren / zitieren --> Unities abgeben: Nur für Andi Beck
Zitat: Original erstellt von Andi Beck: Lenny, bist du dir sicher, dass du technischer Zeichner bist und nicht Programmierer?
Die Frag stell ich mich auch manchmal... Das was mein Vertrag über mein Tätigkeitsfeld aussagt und was meine Arbeit über mein Tätigkeitsfeld aussagt dividieren recht stark auseinander. ------------------ ---------------------- nur ein automatisierter Prozess ist ein guter Prozess... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|