Autor
|
Thema: Aufruf Dateieigenschaften in VBA (7221 mal gelesen)
|
Stelli1 Moderator Verm.-Ing.
   
 Beiträge: 1195 Registriert: 17.08.2005 Map 2000-2010, Rasterdesign MapGuide 6.5 - 2010 Oracle 9i,10g Enterprise autodesk Topobase 2-2010 VS6, VS.net
|
erstellt am: 24. Mrz. 2006 10:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo, Zitat: Original erstellt von wwwilli: Das mit der ersten Variante hat den Nachteil, dass ich sie nicht kapiere. Du siehst ja, dass ich mich Taste für Taste vorarbeiten muss...
Die Antworten sollten auf keinen Fall irgendwie negativ rüberkommen. Wenn ja, dann sorry, war auf keinen Fall so gemeint. Zitat: Original erstellt von wwwilli: Hallo, weiß jemand, wie in einem VBA-Makro in ACAD die Dialoge "Dateieigenschaften" und "Dateispeichernunter" (oder ähnlich) aufgerufen werden können? MfG
Es ist jedoch schwer eine Lösung vorzuschlagen da du nicht geschrieben hast was du machen willst. Schilder doch mal deine Aufgabe, ansonsten kann ich mir keinen Reim darauf machen was deine Aufgabe ist. Formulare verwendest du nicht ?! Übringens der Commondialog ist dazu gedacht den Windows Öffnen/Speichern Dialog aufzurufen. Er ist ein OCX und kann unter Werkzeuge mit eingeblendet werden (TR in der Werkzugpalette, Zusätzliche Komponenten) Dieses OCX kann man dann wie eine Textbox auf ein Formular ziehen. Stelli ------------------ Warum lisp'eln wenn's auch anders geht. www.ib-stelberg.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 305 Registriert: 21.03.2006 ACAD MAP 3D 2009. VestraCAD. Win XP SP3, FD 150 GB, Pentium4, 3,2 GHz, 4 GB.
|
erstellt am: 27. Mrz. 2006 11:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo, mein Makro soll bei Bedarf die Standard-Anweisung "Speichern Unter" ersetzen. Es soll erst die Dateieigenschaften abfragen, daraus, wenn möglich Rückschlüsse ziehen, in welchen Ordner das neue Bild gehören könnte und einen Vorschlag machen, wie es (nach vorgegebener Systematik) heißen könnte. Dann Speichern Unter ausführen (mit dennoch freier Wahl von Namen und Ordner). Und dann aus Dateiinfos und Namen und Pfad einen Eintrag in eine Übersichtsdatei für jeden Ordner absetzen.In Word, XL und PP habe ich Ähnliches mittlerweile hinbekommen, in ACAD bin ich mit dem ...sendcommand "_saveas " auch mit Leerzeichen nicht wirklich glücklich, da ich Pfad und Namen nicht vorschlagen und dennoch frei wählbar machen kann. Sonst könnte ich ja gleich in VBA saveas ausführen. Ohne Scham gebe ich zu, dass mir vieles beim Programmieren in VBA tatsächlich verborgen bleibt, da ich das nicht richtig gelernt habe und mich neben meiner Arbeit als Bauingenieur nur minutenweise mit Informatik beschäftigen kann. Gelernt habe ich ab 1976 Progranmmieren mit Fortran IV und anderen tollen Sachen, aber das bringt mich in VBA über eine konfuse, aber funktionierende Programmstruktur nicht hinaus. Die mir zur Verfügung stehende Hilfefunktionen finde ich oft skandalös unhilfreich. Ich bin oft auf übertragbare Beispiele angewiesen, um sie angepasst zu übernehmen. Bisher ging das eigentlich auch ganz gut, und meine Makros funktionieren zu meiner Zufriedenheit; an diesem Punkt komme ich aber lange nicht weiter. MfG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Huebi Mitglied Vermessungsing.
 
 Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 27. Mrz. 2006 12:08 <-- editieren / zitieren --> Unities abgeben:         
Servus Willi,Der Ansatz von Carsten war doch schon ganz gut und treffend. Du solltest Dich mit dem CommonDialog auseinandersetzen oder zumindest ihn richtig abkupfern können. So hab's zumindest ich gemacht ;-) Als erstes erstellst Du Dir in VBA unter "Extras" - "Verweise" einen Verweis zu CommonDialog indem Du "Microsoft Common Dialog Control..." anklickst. Danach erstellst Du einfach mal ein neues Formular mittels "Einfügen" - "UserForm". Keine Angst, Du mußt ja jetzt nicht zum Formularprogrammierer werden, Du brauchst es nur um den Common Dialog anzusprechen. In Deiner Werzeugsammlung (mit der man Befehlschaltflächen etc. reinbasteln kann) sollte nun zusätzlich der Button "CommonDialog" hinzugekommen sein. Falls nicht, dann füge es mit "Extras" "Zusätzliche Steuerelemente" dazu. Dieses Steuerelement ziehst Du einfach in Dein leeres Formular. So, und jetzt öffnest Du den Code zum Formular (rechte Maustaste, "Code anzeigen") und kopierst den Code von Carsten (den Du sinnvollerweise an Deine Bedürfnisse anpasst) da rein. (ich hab's ein bischen abgewandelt) Zitat:
Code:
Private Sub UserForm_Activate()CommonDialog1.DialogTitle = "Titel" CommonDialog1.flags = cdlOFNOverwritePrompt + cdlOFNNoChangeDir CommonDialog1.Filter = "DXF Files (*.dxf)|*.dxf" 'Filtername CommonDialog1.CancelError = True CommonDialog1.FileName = "" 'Dateinamenvorgabe CommonDialog1.InitDir = "S:\DXF" 'Pfadvorgabe CommonDialog1.ShowSave 'Ruft Speichernunter-Dialog auf If Err = cdlCancel Then Exit Sub DXF_File = CommonDialog1.FileName 'Übergabe dateiname von Dialog ThisDrawing.SaveAs (DXF_File), acR12_dxf 'Speichern als DXF Release12 End Sub
Und jetzt kannst Du dieses Formular aus einem Modul mit "call" aufrufen. Bei mir hat's immer ganz prima so geklappt :-) Liebe Grüße vom Hübi ------------------ Schaun ma mal, dann seng ma scho....  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 305 Registriert: 21.03.2006 ACAD MAP 3D 2009. VestraCAD. Win XP SP3, FD 150 GB, Pentium4, 3,2 GHz, 4 GB.
|
erstellt am: 27. Mrz. 2006 13:18 <-- editieren / zitieren --> Unities abgeben:         
Hallo, läuft schon nicht. In Verweise gibt es bei mir "Microsoft Common Dialog Control..." nicht. Hätte das nach Installation des CommonControl-Links von Carsten auftauchen sollen? Oder muss ich das noch suchen? Oder heißt es vieleicht anders?Funktioniert das Ganze dann gegebenenfalls auch bei anderen Benutzern? Oder muss das dann wiederholt werden? Und beim nächsten ACAD-Update? Bei Nicht-Standard-Methoden sollte man vielleicht lieber die Finger weg lassen... MfG
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Huebi Mitglied Vermessungsing.
 
 Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 27. Mrz. 2006 13:38 <-- editieren / zitieren --> Unities abgeben:         
Hallo Willi, Zitat: läuft schon nicht. In Verweise gibt es bei mir "Microsoft Common Dialog Control..." nicht. Hätte das nach Installation des CommonControl-Links von Carsten auftauchen sollen? Oder muss ich das noch suchen? Oder heißt es vieleicht anders?
Falls Du es in der Liste nicht finden solltest, dann gehe auf "Durchsuchen" und such die Datei: "...\Windows\system32\Comdlg32.ocx". Leider weiß ich nicht, wann die Datei auf den Rechner installiert wird - ich vermute mal bei der Windows - Installation oder spätestens, wenn man Office installiert. Zitat: Funktioniert das Ganze dann gegebenenfalls auch bei anderen Benutzern?
Ja! Zitat: Und beim nächsten ACAD-Update?
Ich sag mal: wenn Du Dir da jetzt Sorgen machst, solltest Du die Finger von VBA in AutoCAD lassen!!! Bei einem bin ich mir allerdings ganz sicher: Wenn uns der Himmel auf den Kopf fallen wird, funktionieren auch die CommonDialogs nicht mehr! Zitat: Bei Nicht-Standard-Methoden sollte man vielleicht lieber die Finger weg lassen...
Microsoft Common Dialog IST Standard und nichts exotisches und einer der einfachsten Wege das zu erreichen, was Du hier geschildert hast. Leider lese ich aus Deinen Beiträgen einen gewissen Pessimismus und den wird kein noch so kompetenter und gut gemeinter Tipp aus diesem Forum überwinden können sondern nur Du selbst. Mein Tip: Wenn Du möchtest, dass man Dir hilft, lass Deinen Frust nicht hier im Forum aus. Nix für ungut Hübi
------------------ Schaun ma mal, dann seng ma scho....  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 305 Registriert: 21.03.2006 ACAD MAP 3D 2009. VestraCAD. Win XP SP3, FD 150 GB, Pentium4, 3,2 GHz, 4 GB.
|
erstellt am: 27. Mrz. 2006 14:00 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von Huebi: Leider lese ich aus Deinen Beiträgen einen gewissen Pessimismus...
Nicht doch... wer kommt denn auf sowas? In Word-VBA habe ich gut 10 Minuten gebraucht, um zu kriegen, was ich wollte, hier bin ich nach 10 Tagen noch nicht weiter. Ein Schelm, wer Schlechtes dabei empfände... "Windows\system32\Comdlg32.ocx" ist da, lässt sich aber unter Verweise nicht hinzufügen: "Verweis auf angegebene Datei kann nicht hinzugefügt werden." Keine weiteren Infos vorhanden. :-)))) Heißt das veilleicht in der Liste "Verfügbare Verweise" doch anders und ist schon da? Da sehe ich überschläglich 200 bis 300 Einträge, von denen es vielleicht einer sein könnte. MfG vom immer optimistischen wwwilli
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Huebi Mitglied Vermessungsing.
 
 Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 27. Mrz. 2006 14:12 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Nicht doch... wer kommt denn auf sowas? In Word-VBA habe ich gut 10 Minuten gebraucht, um zu kriegen, was ich wollte, hier bin ich nach 10 Tagen noch nicht weiter. Ein Schelm, wer Schlechtes dabei empfände...
Naja, man sollte sich im klaren sein, dass AutoCAD und VBA ein bischen was anderes ist als ein Tastaturrecorder in M$-Office (hach, was bin ich heute aber bissig ). Die CommonDialogs stehen im Normalfall in dieser von Dir beschriebenen schier endlosen Liste (die übrigens nicht das geringste mit AutoCAD sondern vielmehr mit M$-VBA zu tun hat). Der genaue Name lautet bei mir (was bei Dir allerdings ganz anders sein kann) "Microsoft Common Dialog Control 6.0 (SP3)". Keine Ahnung, ob das uptodate ist, es funktioniert zumindest (und das nicht nur bei mir). Falls Du es nicht finden kannst, kann ich Dir auch nicht weiterhelfen (Bin ja kein Programmierer oder Softwareprofi). Doch allen, die da mehr Ahnung haben solltest Du in Deinem Profil ein paar Zusatzinfos über Deine eingesetzte Hard- und Software angeben (könnte ja sein, dass gewisse Dinge bei älteren Versionen nicht unterstützt werden). So long, viel Erfolg beim "Speichern unter" Hübi P.S. Vielleicht gibt's ja im Officepaket bald ein CAD-Programm
------------------ Schaun ma mal, dann seng ma scho....  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wwwilli Mitglied Ingenieur
 
 Beiträge: 305 Registriert: 21.03.2006 ACAD MAP 3D 2009. VestraCAD. Win XP SP3, FD 150 GB, Pentium4, 3,2 GHz, 4 GB.
|
erstellt am: 27. Mrz. 2006 14:29 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ächz, acker, maloch, schwitz. Es geht voran.Jetzt sag mir noch bitte, wie es hinter "call" weitergeht. Ich habe noch nie mit Userforms gearbeitet und habe keine Ahnung, wie die benannt oder angesprochen werden wollen. MfG vom immer optimistischen wwwilli
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Carsten1210 Mitglied Holztechniker
   
 Beiträge: 1096 Registriert: 24.07.2002 ACA 2011 / Solidworks 2011 SP3.0 Solidworks EnterprisePDM 2011 SP2.0 Windows 7 Core i7 2600K , 8192MB Nvidia Quadro FX 3800 2x Apple Cinema Display 23"
|
erstellt am: 27. Mrz. 2006 14:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo wwwilli,Userformen (Formulare) werden wie folgt aufgerufen: Name.show Wobei der Name, der Name ist den du dem Formular zugewiesen hast. Standardmäßig ist hier Userform1 usw. vorgegeben. Vielleicht doch öfter mal F1 drücken? Gruß, Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Huebi Mitglied Vermessungsing.
 
 Beiträge: 107 Registriert: 08.01.2004 Intel Core Duo E6750@2.66GHz NVIDIA GeForce 8600 GT AutoCAD 2004, 2007, 2008 AcadMAP 2004 und 2007 Civil 3D 2008 ADT 2009
|
erstellt am: 27. Mrz. 2006 14:47 <-- editieren / zitieren --> Unities abgeben:         
Servus Willi,benutz doch mal ein starkes Deo - ich kann's ja förmlich riechen, wie Du schwitzt. Schön, dass es doch klappt , aber ein bischen musst Du schon noch selber suchen (und auch finden) "call" war der falsche Aufruf. Ein Formular startet man natüüürlich mit ".show" Also: Nemen wir mal an, Dein Formular hat den wunderschönen Namen: "Saveas_dwg" dann rufst Du das Formular mit dem Befehl "Saveas_dwg.Show" auf. Falls es allerdings nur schnöde "UserForm1" heißt, sollte es mit "UserForm1.Show" klappen. Die Einstellungen der Variablen des CommonDialog (wie von Carsten beschrieben) sind eigentlich ziemlich selbsterklärend. Das musst Du Dir halt an Deine Bedürfnisse anpassen. Und wenn Dein "Speichen unter" klappt, möchte ich das Freibier ploppen hören!!!! Mit den besten Empfehlungen Hübi ------------------ Schaun ma mal, dann seng ma scho....  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige:
Anzeige: (Infos zum Werbeplatz >>)
|