| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY präsentiert die PRO Elite™ High Endurance microSD-Flash-Speicherkarten für Videoüberwachung und kontinuierliche Aufzeichnung, eine Pressemitteilung
|
Autor
|
Thema: fso.filecopy funktioniert nicht (4288 mal gelesen)
|
Heiko76 Mitglied Applikationsingenieur
  
 Beiträge: 589 Registriert: 21.03.2002
|
erstellt am: 16. Okt. 2004 08:21 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, ich möchte gerne eine Datei mit Hilfe des FSO kopieren und danach die alte löschen. Nur leider nimmt er den Befehl fso.filecopy nicht an. Hab ich da noch irgendwas vergessen oder falsch gemacht? Hier der Code: Private fso As New FileSystemObject Public Sub bmpmove() Dim ssetObj As AcadSelectionSet Dim Entry As AcadRasterImage Dim GroupCode(0) As Integer Dim dataCode(0) As Variant Set ssetObj = Nothing Set ssetObj = ThisDrawing.SelectionSets.Add("XX") GroupCode(0) = 0 dataCode(0) = "IMAGE" ssetObj.Select acSelectionSetAll, , , GroupCode, dataCode If Entry Is Nothing Then GoTo ende Else For Each Entry In ssetObj BLfd = "0" Bildalt = Entry.ImageFile Dateiname = frmSFeld.Zeichnungsnummer.Text werk = Mid(Dateiname, 1, 1) LfdNR = Mid(Dateiname, 3, 5) Bildneu = CStr(werk & LfdNR & "_B" & (BLfd + 1) & "_" & frmSFeld.Revisionsstand.Text & ".bmp") Set fso = CreateObject("scripting.filesystemobject") fso.CopyFile (Bildalt, Bildneu) fso.DeleteFile (Bildalt) Next Entry ssetObj.Delete End If : ende End Sub Er markiert mir die Zeile "fso.CopyFile (Bildalt, Bildneu)" immer rot und sagt "Fehler beim Kompilieren: Syntaxfehler". Auch wenn ich die Funktion "fso.Movefile" verwende.
Bei der nächsten Zeile "fso.Deletefile (Bildalt)" macht er keine Schwierigkeiten. Kann mir einer helfen??? ------------------ cu Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 16. Okt. 2004 10:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 16. Okt. 2004 14:26 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
|
BloodyMess Mitglied Applicationingenieur
  
 Beiträge: 604 Registriert: 06.06.2002 AutoCAD Map 3D 2005 Win XP pro
|
erstellt am: 16. Okt. 2004 14:53 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
Hallo Udo, bin gerade etwas verwirrt! Zwei verschiedene User??? Code: Bildneu = CStr(werk & LfdNR & "_B" & (BLfd + 1) & "_" & frmSFeld.Revisionsstand.Text & ".bmp")
Wenn es so festgelegt ist, dann bekommt es natürlich die Endung bmp! Gruß TP ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 16. Okt. 2004 18:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
@BloodyMess Heiko ist Heiko und ich bin Udo. Ich hab nur mal einen Blick auf den Code geworfen und mir viel einfach die fest vorgegebene Dateiendung auf. Ich wollte mit der Frage nur mal den Finger auf die Stelle legen. (OffTopic: Ich lasse von mir hören, sobald ich mich mehr mit Elementklassifizierung beschäftigen durfte) Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heiko76 Mitglied Applikationsingenieur
  
 Beiträge: 589 Registriert: 21.03.2002
|
erstellt am: 18. Okt. 2004 08:26 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, @TP Ich habe die Klammern weg genommen und siehe da, er meldet mir nicht mehr den Fehler. Aber, jetzt steigt er mir an folgender Stelle aus der Sub aus und läuft dann ohne Probleme zu melden weiter. Set ssetObj = ThisDrawing.SelectionSets.Add("XX") Wenn ich diese Zeile auskommentier, dann steigt er mir an folgender Stelle aus der Sub aus. ssetObj.Select acSelectionSetAll, , , GroupCode, dataCode Was kann das sein? @ Udo Ich habe zum testen eine BMP in die Zeichnung eingefügt und hatte zum vereinfachen das in den Code eingetragen. Nachher lese ich die Endung aus und setze diese dann ans Ende des Dateinamens. Aber, gut aufgepasst. 
------------------ cu Heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karsten HST Mitglied Bauingenieur

 Beiträge: 54 Registriert: 22.04.2003
|
erstellt am: 18. Okt. 2004 10:47 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
Anscheinend existiert der Auswahlsatz "XX" bereits und kann somit nicht mehr hinzugefügt werden. In diesem Fall muss dann die Item-Funktion verwendet werden. Set ssetObj = ThisDrawing.SelectionSets.Item("XX") Kommentierst Du die erste Zeile zur Zuweisung eines Auswahlsatzobjektes aus, kannst Du auch keine Anweisungen darauf ausführen, da die Objektvariable ssetObj keinen Verweis gespeichert hat. Zur Initialisierung könntest Du folgende 2 Zeilen nacheinander ausführen ThisDrawing.SelectionSets.Add "XX" Set ssetObj = ThisDrawing.SelectionSets.Item("XX") So gehst Du sicher, das der Auswahlsatz angelegt wird, wenn er nicht existiert. Da die erste Zeile unter Umständen einen Fehler auslöst, sollten Deine Routinen immer mit einer Zeile zum Abfangen von Fehlern beginnen. On Error Resume Next oder On Error Goto ... Außerdem solltest Du die nicht benötigten Auswahlsätze immer löschen, damit Du die Übersicht nicht verlierst. ssetObj.Delete oder ThisDrawing.SelectionSets.Item("XX").Delete
Zitat: Original erstellt von Heiko76: Hallo zusammen,@TP Ich habe die Klammern weg genommen und siehe da, er meldet mir nicht mehr den Fehler. Aber, jetzt steigt er mir an folgender Stelle aus der Sub aus und läuft dann ohne Probleme zu melden weiter. Set ssetObj = ThisDrawing.SelectionSets.Add("XX") Wenn ich diese Zeile auskommentier, dann steigt er mir an folgender Stelle aus der Sub aus. ssetObj.Select acSelectionSetAll, , , GroupCode, dataCode Was kann das sein? @ Udo Ich habe zum testen eine BMP in die Zeichnung eingefügt und hatte zum vereinfachen das in den Code eingetragen. Nachher lese ich die Endung aus und setze diese dann ans Ende des Dateinamens. Aber, gut aufgepasst. 
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Karsten HST Mitglied Bauingenieur

 Beiträge: 54 Registriert: 22.04.2003
|
erstellt am: 18. Okt. 2004 10:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
Verwende doch einfach die VBA-Anweisungen FileCopy Source, Destination zum kopieren und Kill FileName zum Löschen der Dateien.
Zitat: Original erstellt von Heiko76: Hallo zusammen,ich möchte gerne eine Datei mit Hilfe des FSO kopieren und danach die alte löschen. Nur leider nimmt er den Befehl fso.filecopy nicht an. Hab ich da noch irgendwas vergessen oder falsch gemacht? Hier der Code: Private fso As New FileSystemObject Public Sub bmpmove() Dim ssetObj As AcadSelectionSet Dim Entry As AcadRasterImage Dim GroupCode(0) As Integer Dim dataCode(0) As Variant Set ssetObj = Nothing Set ssetObj = ThisDrawing.SelectionSets.Add("XX") GroupCode(0) = 0 dataCode(0) = "IMAGE" ssetObj.Select acSelectionSetAll, , , GroupCode, dataCode If Entry Is Nothing Then GoTo ende Else For Each Entry In ssetObj BLfd = "0" Bildalt = Entry.ImageFile Dateiname = frmSFeld.Zeichnungsnummer.Text werk = Mid(Dateiname, 1, 1) LfdNR = Mid(Dateiname, 3, 5) Bildneu = CStr(werk & LfdNR & "_B" & (BLfd + 1) & "_" & frmSFeld.Revisionsstand.Text & ".bmp") Set fso = CreateObject("scripting.filesystemobject") fso.CopyFile (Bildalt, Bildneu) fso.DeleteFile (Bildalt) Next Entry ssetObj.Delete End If : ende End Sub Er markiert mir die Zeile "fso.CopyFile (Bildalt, Bildneu)" immer rot und sagt "Fehler beim Kompilieren: Syntaxfehler". Auch wenn ich die Funktion "fso.Movefile" verwende.
Bei der nächsten Zeile "fso.Deletefile (Bildalt)" macht er keine Schwierigkeiten. Kann mir einer helfen???
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 18. Okt. 2004 11:24 <-- editieren / zitieren --> Unities abgeben:          Nur für Heiko76
ja das ist etwas komisch mit der Klammersetzung in VBA,VB rufst du eine funktion mit nur einem parameter auf, ist es egal, ob du es in Klammer schreib´st oder nicht. bei funktionen mit mehreren parametern, funktioniert nur die klammerlose schreibweise. z.B.: Sub test() test1 "1" test1 ("1") Call test1("1") test2 "1", "2" test2 ("1", "2") ' die geht einfach nicht Call test2("1", "2") End Sub Sub test1(a1) Debug.Print a1 End Sub Sub test2(a1, a2) Debug.Print a1 Debug.Print a2 End Sub aber achtung rufts du eine funktion mit rückgabewerten auf mit mehreren argumenten, musst du es erst recht wieder in klammer schreiben !
Sub test() a3 = test3(5, 4) End Sub
Function test3(a1, a2) test3 = a1 + a2 End Function also ich habs mir eigentlich angewöhnt immer in klammer zu schreiben, und rückgabewert-freie subs mit call zu starten
call fso.CopyFiles(quelle,ziel) ------------------ WWW.FFZELL.AT.TC Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Heiko76 Mitglied Applikationsingenieur
  
 Beiträge: 589 Registriert: 21.03.2002
|
erstellt am: 18. Okt. 2004 11:49 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |