Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Makro catvba: Verzeichnis auslesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Makro catvba: Verzeichnis auslesen (7188 mal gelesen)
reiffm
Mitglied
Angestellter


Sehen Sie sich das Profil von reiffm an!   Senden Sie eine Private Message an reiffm  Schreiben Sie einen Gästebucheintrag für reiffm

Beiträge: 82
Registriert: 18.08.2000

erstellt am: 25. Mrz. 2010 15:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Axel.Strasser an!   Senden Sie eine Private Message an Axel.Strasser  Schreiben Sie einen Gästebucheintrag für Axel.Strasser

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für reiffm 10 Unities + Antwort hilfreich

mit vbs mache ich es so:

Code:
Source_dir = WScript.ScriptFullName
Source_dir = left(Source_dir, inStrRev(Source_dir, "\"))

Axel

------------------
Inoffizielle deutsche CATIA Hilfeseite  Netiquette von cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

reiffm
Mitglied
Angestellter


Sehen Sie sich das Profil von reiffm an!   Senden Sie eine Private Message an reiffm  Schreiben Sie einen Gästebucheintrag für reiffm

Beiträge: 82
Registriert: 18.08.2000

erstellt am: 25. Mrz. 2010 15:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von PinKing an!   Senden Sie eine Private Message an PinKing  Schreiben Sie einen Gästebucheintrag für PinKing

Beiträge: 15
Registriert: 11.03.2010

XP, DMU Navigator V5 R19

erstellt am: 31. Mrz. 2010 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für reiffm 10 Unities + Antwort hilfreich

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.Apc

CatVBA_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


Sehen Sie sich das Profil von reiffm an!   Senden Sie eine Private Message an reiffm  Schreiben Sie einen Gästebucheintrag für reiffm

Beiträge: 82
Registriert: 18.08.2000

erstellt am: 01. Apr. 2010 08:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super. Danke!
10u4u

------------------
Frohes Schaffen
Michael Reiff

[Diese Nachricht wurde von reiffm am 01. Apr. 2010 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DonYouAn
Mitglied
Dipl.-Ing. Feinwerk- und Mikrotechnik


Sehen Sie sich das Profil von DonYouAn an!   Senden Sie eine Private Message an DonYouAn  Schreiben Sie einen Gästebucheintrag für DonYouAn

Beiträge: 39
Registriert: 19.04.2005

Catia V5 1605, 1803, 1903

erstellt am: 08. Apr. 2010 14:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für reiffm 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von InFlames an!   Senden Sie eine Private Message an InFlames  Schreiben Sie einen Gästebucheintrag für InFlames

Beiträge: 72
Registriert: 22.09.2014

Windows 7 Professional
Catia V5R26

erstellt am: 09. Apr. 2016 07:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für reiffm 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von joehz an!   Senden Sie eine Private Message an joehz  Schreiben Sie einen Gästebucheintrag für joehz

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für reiffm 10 Unities + Antwort hilfreich

KADv5
Mitglied
Ingenieur


Sehen Sie sich das Profil von KADv5 an!   Senden Sie eine Private Message an KADv5  Schreiben Sie einen Gästebucheintrag für KADv5

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für reiffm 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz