Autor
|
Thema: right-Funktion bis zu einem Zeichen (1782 mal gelesen)
|
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 10. Sep. 2009 12:06 <-- editieren / zitieren --> Unities abgeben:
Hallo. Seit paar Tagen versuche ich mich der ganzen Materie anzunähern.. Sehr sehr holprig :/ Auf der Arbeit habe ich jedoch den Ziethen und Hansen.. Was ich jedoch jetzt nicht finden konnte, genausowenig wie im Netz: Ist es möglich die right-Funktion auch bis zu einem bestimmten Zeichen auszuführen? Beispielsweise: Ordner = right(datei.Fullname , "\") Funktionieren tut es leider nicht. Nur eben mit Zahlen. Oder gibt es eine andere Möglichkeit, wenn ich z.B den Ordner von einer Datei herausbekommen möchte? Und mit welchem Befehl könnte ich diesen Ordner dann nach einem bestimmten Dateityp durchsuchen? Danke schon einmal Gruß Andreas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 10. Sep. 2009 12:32 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
müsste es nicht LEFT sein? Code: Sub CATMain() Dateipfad = CATIA.ActiveDocument.FullNameLaufwerk = Left(Dateipfad, Instr(Dateipfad, "\")) Dateipfad = Left(Dateipfad, Instrrev(Dateipfad, "\")) MsgBox "Laufwerk:" & Laufwerk & Chr (13) & "Dateipfad:" & Dateipfad End Sub
¤dit... Link wegeworfen und Code platziert [Diese Nachricht wurde von Thomas Harmening am 10. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2009 12:33 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Hallo, dafür gibt es die Funktion mid Syntax mid(string, Startpunkt, [Länge]) Beispiel: string="1234567" mid(string,3,3)=345 um zu ermitteln, nach wieviel Zeichen ein bestimmtes Zeichen kommt gibt es instr Syntax instr(string, Suchstring) Beispiel= String="zuiwert" instr(string, "w")=4 diese kann man auch miteinander kombinieren Beispiel String="Ich bin ein Text" mid(string, instr(string, "b"), 7)="bin ein" HTH
------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." 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
|
erstellt am: 10. Sep. 2009 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Im vbs mach ich es z.B. so: Code: Source_dir = WScript.ScriptFullName Source_dir = left(Source_dir, inStrRev(Source_dir, "\"))
und noch etwas für ein rekursives Directory suchen:
Code: strDirectories(0) = InputBox("Start_dir:", "Start Directory", Scriptpath) If strDirectories(0) = "" Then Wscript.QuitstrDirectories(0) = fso.GetAbsolutePathName(strDirectories(0)) lngCounter = 0 Do Until lngCounter > Ubound(strDirectories,1) 'Next folder to process Set fol = fso.GetFolder(strDirectories(lngCounter)) WshShell.popup " " & strDirectories(lngCounter),1,"Fortschritt Directory Listing" 'Get each file in turn Set fils = fol.Files For Each fil In fils owner = GetOwner(strDirectories(lngCounter) & "\" & fil.name) fl.WriteLine strDirectories(lngCounter) & " " & fil.name & " " & _ fso.GetExtensionName(fil.name) & " " & fil.size & " " & fil.DateLastAccessed & " " & owner Next 'Check for any sub folders and add them to the folder Array Set fols = fol.SubFolders For each fol in fols If Lcase(fol.Name) <> "recycler" and Lcase(fol.Name) <> "system volume information" Then Redim Preserve strDirectories(Ubound(strDirectories,1) + 1) strDirectories(Ubound(strDirectories,1)) = fol.Path End If Next lngCounter = lngCounter + 1 Loop
Axel ------------------ Inoffizielle deutsche CATIA Hilfeseite Netiquette von cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 10. Sep. 2009 13:10 <-- editieren / zitieren --> Unities abgeben:
Hallo. Erstmal danke für die raschen Antworten. Ich denke, ich habe mich nicht deutlich genug ausgedrückt. @Thomas: Ich möchte den Dateinamen von rechts angehen. Zur Erklärung: \\OrdnerPfad\Dateiname.catproduct Was ich möchte ist, dass ich nur den Ordnerpfad am Ende habe. Deswegen dachte ich mir, dass es am besten wäre von rechts dranzugehen bis eben zu dem ersten "\", sodass ich den Pfad auslesen und mit diesem weiterarbeiten kann. Allerdings geht das auf diese Weise anscheinend nicht. Die Funktion Dir(...) habe ich auch entdeckt, bloß dort muss ich einen Ordnerpfad angeben, um damit arbeiten zu können, den ich ja eigentlich herausbekommen möchte. Und meine andere Frage: Wäre es möglich einen bestimmten Ordner (per Verzeichnispfad) nach bestimmten Dateien (.cgr) abzufragen und mit diesen weiterarbeiten? (Ziel des ganzen ist ein Ordner zu durchsuchen und bestimmte Dateitypen herauszulöschen)
edit: Habe nun diesen Befehl gefunden
CurDir() Der spuckt mir den Pfad aus. Problem 1 mal gelöst [Diese Nachricht wurde von AndreasNilli am 10. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2009 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Hallo, dafür gibt es einfachste API´s schau mal hier: http://www.vbarchiv.net/api/api_findfirstfile.html Hier mal ein Beispiel... Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * 260 cAlternate As String * 14 End Type Private Sub Main() Dim i As Long Dim j As Long Dim ActPath As String Dim ActExt As String Dim ActFile As String Dim FHandle As Long Dim FData As WIN32_FIND_DATA ActPath="C:\CATIACache\" ActExt = "*.cgr" FHandle = FindFirstFile(ActPath & ActExt, FData) Do If FData.dwFileAttributes <> vbDirectory And FHandle >= 0 Then ActFile = ActPath & Left$(FData.cFileName, InStr(FData.cFileName, vbNullChar) - 1) 'ermittelt den Datei inkl. Pfad namen Kill ActFile 'löscht die Datei End If Loop While FindNextFile(FHandle, FData) Call FindClose(FHandle) End Sub Ob es direkt funktioniert, weis ich im Moment nicht, da ich das schnell zusammen kopiert und etwas abgeändert habe. Vom Prinzip her habe ich aber keinen Fehler finden können. ------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2009 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Sorry habe es eben aus schlechtem Gewissen heraus mal ausprobiert und musste leider feststellen, dass ich was vergessen habe . So funktionierts direkt, wenn du den Pfad anpasst. Dabei würde alle *.cgr-Files in dem angegebenen Ordner gelöscht werden. Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * 260 cAlternate As String * 14 End Type Sub CATMain() Dim ActPath As String Dim ActExt As String Dim ActFile As String Dim FHandle As Long Dim FData As WIN32_FIND_DATA ActPath = "C:\Cache\cgr\#3\TeamPDM\" 'Beispiel ActExt = "*.cgr" FHandle = FindFirstFile(ActPath & ActExt, FData) Do If FData.dwFileAttributes <> vbDirectory And FHandle >= 0 Then ActFile = ActPath & Left$(FData.cFileName, InStr(FData.cFileName, vbNullChar) - 1) 'ermittelt den Datei inkl. Pfad namen Kill ActFile 'löscht die Datei End If Loop While FindNextFile(FHandle, FData) End Sub ------------------ MFG Rick Schulz
Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." [Diese Nachricht wurde von RSchulz am 10. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 10. Sep. 2009 14:10 <-- editieren / zitieren --> Unities abgeben:
Hey. Wow, vielen Dank für den kompletten Code. Da ich noch sehr am Anfang bin, verstehe ich daraus nicht allzuviel.. Ich habe jedoch noch was hinzugefügt, sodass es den aktuellen Pfad automatisch findet: (Es soll ja im Prinzip so ablaufen, dass jem., der die BG offen hat, auf einen Button klickt und die CGR aus dem Ordner gelöscht wird) Code: Sub CATMain()Set productDocument1 = CATIA.ActiveDocument Dim S As String S = CurDir() '<<<<<<<<<<<<< Dim ActPath As String Dim ActExt As String Dim ActFile As String Dim FHandle As Long Dim FData As WIN32_FIND_DATA ActPath = S '<<<<<<<<<<< ActExt = "*.cgr" FHandle = FindFirstFile(ActPath & ActExt, FData)
Der Rest überhalb der CATMain() und unterhalb der ActExt ist wie oben. Leider löscht er mir die .cgr nun nicht raus. Sicherlich muss ich noch etwas anderes hinzufügen, jedoch erschien mir das Hinzugefügte relativ logisch. (Aber ist ja nicht das 1.Mal, dass mir etwas logisch erscheint und dann doch nicht funktioniert.) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2009 14:21 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
versuchs mal mit: Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Dim S As String S = CurDir() '<<<<<<<<<<<<< S = S & "\" Dim ActPath As String Dim ActExt As String Dim ActFile As String Dim FHandle As Long Dim FData As WIN32_FIND_DATA ActPath = S '<<<<<<<<<<< ActExt = "*.cgr" FHandle = FindFirstFile(ActPath & ActExt, FData Curdir gibt dir nur den Pfad, dann fehlt dir jedoch noch ein Trennzeichen (\) für die Datei BTW kannst du mit F8 taste schrittweise durch den Code gehen und wenn du mit der Maus über eine Variable kommst, wird dir der Inhalt angezeigt. So siehst du auch, ob das Programm durch die Schleife läuft.
------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 10. Sep. 2009 14:29 <-- editieren / zitieren --> Unities abgeben:
Ja das erscheint mir nun auch mal logisch jedoch klappt es immernoch nicht. Ich habe das mal einzeln durchlaufen und er erkennt den Befehl bei ActFile nicht. Wenn ich in die Kill ActFile-Zeile springe, hat ActFile nur den Wert von S. Danach springt er zurück und hört auf, also wiederholt die Schleife nicht. Leider kann ich mir (um es zu programmieren) / dir (um die Fehler bei mir zu erklären) nicht so gut weiterhelfen, da ich mich damit, wie schon gesagt, nicht so gut auskenne.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2009 14:45 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Also bei mir sieht es so aus und funktioniert. Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type
Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * 260 cAlternate As String * 14 End Type Sub CATMain() Dim i As Long Dim j As Long Dim ActPath As String Dim ActExt As String Dim ActFile As String Dim FHandle As Long Dim FData As WIN32_FIND_DATA Dim s As String s = CATIA.ActiveDocument.Path ActPath = s & "\" ActExt = "*.cgr" FHandle = FindFirstFile(ActPath & ActExt, FData) Do If FData.dwFileAttributes <> vbDirectory And FHandle >= 0 Then ActFile = ActPath & Left$(FData.cFileName, InStr(FData.cFileName, vbNullChar) - 1) 'ermittelt den Datei inkl. Pfad namen Kill ActFile 'löscht die Datei End If Loop While FindNextFile(FHandle, FData) End Sub Die CurDir liefert mit C:\Windows\System32 zurück. Daher würde ich mich auf diese nicht verlassen. CATIA.ActiveDocument.Path sollte aber auf das von dir gewünschte hinaus laufen. ------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 10. Sep. 2009 15:13 <-- editieren / zitieren --> Unities abgeben:
Das geht ja ruckzuck hier. Also ich habe deinen Code nun mal 1zu1 reinkopiert. Bei mir will er nicht, jedoch kann es auch sein, dass das an diesem Rechner liegt, da es schon paar Sachen gab, die hier nciht funktioniert haben.
Was ich allerdings nicht verstehe, was diese ersten Zig-Zeilen überhaupt bedeuten. Ich dachte da eher an etwas, was einfach aussieht. *g* Ich weiß auch nicht.. Du wirst vermutlich schmunzeln, aber nunja Am Ende des Beispiels weiß ich nicht wirklich, wie ich mich in Codeform ausdrücken kann, deswegen habe ich nochmal dahinter geschrieben, was ich gemeint habe. (Wobei so etwas wie SelFile wohl nur in CATIA dann geht und nicht auf Windows-Ebene oder? Code: Sub CATMain()Set productDocument1 = CATIA.ActiveDocument Dim Path As String Dim ActPath As String Dim ActExt As String Dim ActFile As String Dim S As String Path = CATIA.ActiveDocument.Path ActPath = Path & "\" ActExt = "*.cgr" If File = ActPath & "*" & ActExt Then 'Suche nach Dateien, die auf .cgr enden und wähle diese aus '"*" ist als Platzhalter gedacht.. Kill File End If End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 10. Sep. 2009 16:26 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Du willst prüfen, ob überhaupt dateien in diesem Ordner sind? Im endeffekt macht das schon das findfile... Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" _ (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" _ (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long Das sind deklarationen. Dabei werden Funktionen von anderen Programmen oder Windows zur Verfügung in die Programmstruktur eingebunden. Public Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Public Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * 260 cAlternate As String * 14 End Type Das sind Userdefinierte Datentypen, die wir für die vorher deklarierten Funktionen benötigen. Zum Thema einfach aussehen... Programmierung ist nunmal kein Zuckerschlecken Wenn ich dir dass Programm zeige, aus dem ich das raus geholt habe, wirst du warscheinlich mit den Ohren schlackern Naja ein 1000-Zeiler ist eigentlich relativ schnell zusammen und dann ist die .exe gerade mal 100kb oder so groß. Windows ist aktuell in der Win7-Version 8-9GByte groß, da weist du was die zu tun haben. zu deinem Code zurück... Sag doch einfach in einer art Ablaufplan was du machen möchtest. ------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 11. Sep. 2009 07:33 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen. Danke erstmal für die Geduld. Mit den Ohren schlackern könnte ich sogar, wenn notwendig Ein Ablaufplan dachte ich mir folgendermaßen:
- den Verzeichnisordner (Path) vom aktuellen Produkt auslesen. - in diesem Ordner wird nach dem Dateientyp "*.cgr" gesucht, ausgewählt und anschließend gelöscht.
Das war es eigentlich auch schon Meine bisherigen Makros waren bisher mit der search.-Funktion innerhalb CATIA, sodass Parts o.Ä. auszuwählen für mich relativ einfach war. Wie ich auf diese Sachen extern in Windows suche, weiß ich leider noch nicht.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 11. Sep. 2009 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Möchtest du manuell aussuchen? Das wird dann nämlich schon etwas mehr werden. ansonsten wäre es schon so wie ich es geschrieben habe. Du hast zwischendurch mal erwähnt, dass es bei dir so nicht laufen würde.? Was läuft denn nicht bzw. wo steigt er denn aus. Vll. fehlt dir lediglich die VBA-Umgebung. ------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 11. Sep. 2009 08:32 <-- editieren / zitieren --> Unities abgeben:
Nein, sollte schon automatisiert ablaufen. Hmm. Habe gerade den Code an einem anderen Rechner ausprobiert. Dort funktioniert es. Irgendwie lustig mein Rechner hier.. War jetzt nicht das 1.Mal, dass er total rumspinnt. Ich muss auch, wenn ich Schritte mit dem Recorder aufnehme, nach jedem Mal neustarten, da er mir ab dem 2.Mal "recorden" nichts mehr aufnimmt. Nunja. Dann muss ich mal unsere EDV-Futzis fragen Vielen Dank dir auf jeden Fall. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 14. Sep. 2009 08:03 <-- editieren / zitieren --> Unities abgeben:
Hi. Irgendwie ging mir die Sache nicht aus dem Kopf und so habe ich mich mal drangesetzt, es nicht mit dem win-basierenden Code (sofern ich das richtig verstanden habe?) löschen zu wollen. Hier ist mein Vorschlag Code: Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Dim Path As String Dim ActPath As String Dim ActExt As String Path = CATIA.ActiveDocument.Path ActPath = Path & "\" ActExt = "*.cgr" Dim TempName As String TempName = Dir$(ActPath & "*.cgr") While Len(Dir(ActPath & TempName)) > 0 'MsgBox TempName Kill ActPath & TempName TempName = Dir$(ActPath & "*.cgr") Wend End Sub
Klappt soweit auch ganz gut, jedoch bringt der Kompiler mir beim letzten Durchlauf der Schleife einen Fehler, da ich innerhalb der Schleife Tempname neu benennen will, aber keine CGR im Ordner mehr vorhanden ist.
Dann dachte ich mir, dass ich eben eine kurze if-Anweisung anbaue Code: [...] While Len(Dir(ActPath & TempName)) > 0 'MsgBox TempName Kill ActPath & TempName If Len(Dir$(ActPath & "*.cgr")) > 0 Then TempName = Dir$(ActPath & "*.cgr") Else: MsgBox "Fertig!" Wend [...]
Jedoch geht das in VB nicht, da er mir dauernd bringt, dass ein "Wend ohne While" vorhanden ist.
Sofern ich die Neubenennung von Tempname außerhalb der Schleife durchführen wollte, tat er mir nicht das, was er sollte, deshalb kam ich auf diesen Code. Wisst ihr einen Lösungsvorschlag? [Diese Nachricht wurde von AndreasNilli am 14. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 14. Sep. 2009 08:16 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Servus Kannst du es nicht einfach direkt machen? zB Code: Set Datei = CATIA.ActiveDocument Ordner =Datei.Path
EDIT: Hat sich scheinbar erledigt. Ich hab nur den Anfang des Themas gelesen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 14. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 14. Sep. 2009 08:27 <-- editieren / zitieren --> Unities abgeben: Nur für AndreasNilli
Hallo, versuch es mal damit. Sub CATMain() Dim Path As String Dim ActPath As String Dim ActExt As String Dim TempName As String Path = CATIA.ActiveDocument.Path ActPath = Path & "\" ActExt = "*.cgr" While Dir$(ActPath & "*.cgr") <> "" '<> steht für ungleich und "" steht für leer 'Mache solange das dir-Ergebnis ungleich leer ist 'MsgBox TempName TempName = Dir$(ActPath & "*.cgr") Kill ActPath & TempName Wend End Sub
------------------ MFG Rick Schulz Nettiquette (CAD.de) Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndreasNilli Mitglied MaschBau, 6.Sem
Beiträge: 22 Registriert: 09.09.2009
|
erstellt am: 14. Sep. 2009 09:00 <-- editieren / zitieren --> Unities abgeben:
|