Autor
|
Thema: Makro catvba: Verzeichnis auslesen (7243 mal gelesen)
|
reiffm Mitglied Angestellter
Beiträge: 82 Registriert: 18.08.2000
|
erstellt am: 25. Mrz. 2010 15:00 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, gibt es eine Möglichkeit, das Verzeichnis aus dem heraus das Makro (catvba) gestartet wurde auszulesen? Meine Versuche mit "GetModuleFileName" scheitern kläglich. ------------------ Frohes Schaffen Michael Reiff Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx
Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 25. Mrz. 2010 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für reiffm
|
reiffm Mitglied Angestellter
Beiträge: 82 Registriert: 18.08.2000
|
erstellt am: 25. Mrz. 2010 15:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Axel, das mit WScript kenne ich, funktioniert aber nicht in catvbs bzw. catvba. Gibt es da einen Trick, wie ich catvba klar machen kann, das es "WScript" als Object gibt? ------------------ Frohes Schaffen Michael Reiff Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PinKing Mitglied
Beiträge: 15 Registriert: 11.03.2010 XP, DMU Navigator V5 R19
|
erstellt am: 31. Mrz. 2010 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für reiffm
Hi, in der FAQ auf die in folgendem Beitrag hingewiesen wurde http://ww3.cad.de/foren/ubb/Forum137/HTML/003979.shtml habe ich folgenden Workaround gefunden: 1.) Öffne im Visual Basic Editor über das Menü "Tools" -> "References" 2.) Suche in der langen Liste den Eintrag "Microsoft APC 6.2 Object Library" und aktiviere ihn. 3.) Folgender Code ermittelt dann den Dateinamen und den Pfad
Code: Dim CatVBA_Filepath, CatVBA_Filename As String Dim APC_Obj As New MSAPC.ApcCatVBA_Filename = APC_Obj.VBE.ActiveVBProject.FileName CatVBA_Filepath = Left(CatVBA_Filename, InStrRev(CatVBA_Filename, "\") - 1)
Vieleicht hilft Dir das ja weiter. Gruss, PinKing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
reiffm Mitglied Angestellter
Beiträge: 82 Registriert: 18.08.2000
|
erstellt am: 01. Apr. 2010 08:35 <-- editieren / zitieren --> Unities abgeben:
|
DonYouAn Mitglied Dipl.-Ing. Feinwerk- und Mikrotechnik
Beiträge: 39 Registriert: 19.04.2005 Catia V5 1605, 1803, 1903
|
erstellt am: 08. Apr. 2010 14:28 <-- editieren / zitieren --> Unities abgeben: Nur für reiffm
Hallo, ich habe das gleiche Problem wie oben beschrieben. Allerdings will ich den Pfad des gerade ausgeführten CATScript ermitteln. Code:
Dim itsPath as string itsPath=left(WScript.ScriptFullName, inStrRev(WScript.ScriptFullName, "\"))
funktioniert so nicht, da angemeckert wird, dass WScript kein Objekt ist. Um ehrlich zu sein, verstehe ich das Vorgehen hier nicht ganz und die Online-Hilfe gibt hierzu auch keine Auskunft. Danke und Gruzz DonYouAn ------------------ Wenn man's kann ist es keine Kunst. Wenn man's nicht kann erst recht nicht! (Karl Valentin) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
InFlames Mitglied techn. Productdesigner
Beiträge: 72 Registriert: 22.09.2014 Windows 7 Professional Catia V5R26
|
erstellt am: 09. Apr. 2016 07:57 <-- editieren / zitieren --> Unities abgeben: Nur für reiffm
Hi, zu dem Script oben. Unter Tools\References\ muss die höchste Version der APC selektiert werden sonst funktioniert das Script nicht. Zusätzlich aber auch Microsoft Visual Basic for Applications Extensibility 5.3 aktivieren. (Ohne gab es hin und wieder ebenfalls Probleme) [Diese Nachricht wurde von InFlames am 09. Apr. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joehz Moderator Freiberuflicher Konstrukteur
Beiträge: 1057 Registriert: 25.11.2006 Win7 Pro 64 + Ubuntu + Irix6.5.20 Dell Precision M6600 i7-2960XM 2.7GHz 16GB NVidia Quadro M5010 Catia V5R19 VB6Pro.SP6/VBA 6.5.1053
|
erstellt am: 09. Apr. 2016 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für reiffm
|
KADv5 Mitglied Ingenieur
Beiträge: 13 Registriert: 22.01.2018 Intel Xeon E5-2643 3,4Ghz 12,0 GB Ram Win 7 Enterprise 64-bit Catia V5R26 SP3 HF21
|
erstellt am: 22. Jan. 2018 15:04 <-- editieren / zitieren --> Unities abgeben: Nur für reiffm
Hallo Zusammen, ich nutze diese Vorgehensweise um Bilder in eine UserForm zu laden. Allerdings habe ich ein Problem. Hier erstmal der Code: Code: Private Sub UserForm_Initialize() 'Pfad des Makros finden Dim apc, Makropfad Set apc = CreateObject("MSAPC.Apc") Makropfad = apc.VBE.ActiveVBProject.FileName 'Pfad der Bilder (resources) finden Dim revMakropfad As String revMakropfad = StrReverse(Makropfad) Dim Zeichen As Long Zeichen = InStr(1, revMakropfad, "\") Dim subMakropfad As String subMakropfad = Mid(revMakropfad, Zeichen) Dim Resourcepfad As String Resourcepfad = StrReverse(subMakropfad) & "resources\" 'Bilder laden With Makro1Form .Makro1Image.Picture = LoadPicture(Resourcepfad & "Beispiel.jpg") End With End Sub
Wenn ich das Makro1 so starte (Über eine benutzerdefinierte Catia Toolbar) setzt er mir den Makropfad auf: "C:\Makros\Makro1\resources\" Alles so wie es sein soll. Danach starte ich ein anderes Makro. Makro2 - mit dem gleichen Code. Allerdings ist der Makropfad immernoch auf Makro1 ("C:\Makros\Makro1\resources") gestellt. Obwohl es ja jetzt "C:\Makros\Makro2\resources" heißen müsste. Den String in Makro1 zu leeren mit Makropfad = "" bringt nichts. Erst in Makro2 setzt er mir den Makropfad falsch. Anscheinend weil in Makropfad = apc.VBE.ActiveVBProject.FileName das ActiveVBProject immernoch Makro1 ist. Gehe ich nun in den VBA-Editor und wechsle manuell in Makro2 startet das Makro wieder ohne Probleme. Hat jemand eine Idee? PS: Makro1 wird über
Code: Private Sub CancelButton_Click() Unload Me End Sub
Beendet Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |