Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  fso.filecopy funktioniert nicht

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


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

Beiträge: 589
Registriert: 21.03.2002

erstellt am: 16. Okt. 2004 08:21    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,

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


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

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 16. Okt. 2004 10:31    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 Heiko76 10 Unities + Antwort hilfreich

Hallo Heiko,

schreibe statt

Code:
fso.CopyFile  (Bildalt, Bildneu)
nur
Code:
fso.CopyFile Bildalt, Bildneu

... nun sollte es funktionieren.

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



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

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 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 Heiko76 10 Unities + Antwort hilfreich

Und Das neue Bild bekommt immer die Endung .BMP verpasst, egal ob es ein Tif, Jpg oder Png war?

Udo Hübner

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

BloodyMess
Mitglied
Applicationingenieur


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

Beiträge: 604
Registriert: 06.06.2002

AutoCAD Map 3D 2005
Win XP pro

erstellt am: 16. Okt. 2004 14:53    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 Heiko76 10 Unities + Antwort hilfreich

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



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

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 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 Heiko76 10 Unities + Antwort hilfreich

@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


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

Beiträge: 589
Registriert: 21.03.2002

erstellt am: 18. Okt. 2004 08:26    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,

@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


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

Beiträge: 54
Registriert: 22.04.2003

erstellt am: 18. Okt. 2004 10:47    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 Heiko76 10 Unities + Antwort hilfreich

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


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

Beiträge: 54
Registriert: 22.04.2003

erstellt am: 18. Okt. 2004 10:49    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 Heiko76 10 Unities + Antwort hilfreich

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


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 18. Okt. 2004 11:24    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 Heiko76 10 Unities + Antwort hilfreich

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


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

Beiträge: 589
Registriert: 21.03.2002

erstellt am: 18. Okt. 2004 11:49    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

Danke Karsten.

Das war das Problem...

... entlich geht es weiter.

------------------

cu
Heiko

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)2025 CAD.de | Impressum | Datenschutz