tif bild kann nicht kopiert werden (VBA)

Hallo,

kennt jemand folgendes Problem und weiß eine Lösung?
ich benutze den Befehl "FileCopy Source, Destination" um Rasterbild-Dateien aus dem Programm heraus zu kopieren und umzubenennen. Klappt alles wunderbar, solange es jpg-Bilder sind. bei tif-Bilder bekomme ich diese Fehlermeldung: Permission denied. Das Bild ist auch nicht schreibgeschützt.
Irgendeine Idee, woran das liegen kann?
Gruß Imke
Hallo Imke,

eine richtige Idee hab ich nicht, weil ich Deinen Fehler (nehme an runtime error 70 (/75/76)?) nicht bei mir reproduzieren kann. IdR liegt sowas wohl an Zugriffsrechten (geöffnete Dateien, fehlende Rechte, Schreibschutz..) oder falsch geschriebenen Pfadangaben, aber wie gesagt nichts genaues weiß ich nicht..

Vielleicht hilft es, wenn Du statt der FileCopy-Methode das CopyFile-Api verwendest:

Deklaration:
Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Aufruf zB:
CopyFile "DeineQuelldatei", "DeineZieldatei", 0

Viele Grüße
Jörg Ostendorp
Hallo Jörg,

es ist runtime error 70. Schreibschutz besteht nicht für die datei (laut Explorer) und geöffnet dürfte sie auch nicht sein. wüßte nicht, wann ich sie öffne und mit der gleichen datei nur als jpg geht es ja auch. Zu den fehlenden Rechten, sie liegt auf dem gleichen laufwerk, wie das mxd-Projekt auch, nur in einem anderen Ordner. Brauch man für tif-Bilder irgendwelche ArcGis lizenzen oder so? aber ich kann sie ja ins Projekt laden.

aber zu dem CopyFile-Api. wo muss ich das denn deklarieren? in der Kopier-Funktion, außerhalb oder in einem eigenen Module? habe bisher noch nicht mit Api's gearbeitet.

Danke, Imke
Hallo Imke,
vielleicht besteht Schreibschutz für das Verzeichnis oder Du hast nicht die notwendigen Rechte ...
Andreas
Hallo Imke,

> Brauch man für tif-Bilder irgendwelche ArcGis lizenzen oder so?

Na, das wär ja noch schöner :-)

> und mit der gleichen datei nur als jpg geht es ja auch

ja, schon seltsam, aber wie gesagt, ich kann Dir da leider keine vernünftige Antwort drauf geben (nehme an, daß es kaum an Schreibfehlern (Pfadangabe) liegen dürfte, oder?). Aber nach Hörensagen hilft eben manchmal die Api-Version.

> wo muss ich das denn deklarieren?

Im Deklarationsteil eines Moduls, zB in "ThisDocument":

----
Option explicit

Private Declare Function ....
'(in eine Zeile oder Zeilenumbruch einfügen)

Private Sub DeineSub()
CopyFile ....
End Sub
----

oder in einem Standardmodul mit *Public* Declare Function ... , wenn Deine Sub/Function nicht im gleichen Modul steckt.

Viele Grüße
Jörg Ostendorp
Hallo Jörg,

es klappt mit der Api-Version!!!
Vielen Dank.

Gruß Imke