none
CopyFile aus WinAPI in VBA aufrufen

    Frage

  • Um es vorab zu sagen: ja ich habe schon gegoogelt, finde allerdings immer nur dieselben Hinweise mit immer ähnlichen Code-Beispielen (als wenn der eine vom anderen plaggiiert hat).

    Ich brauche zur Datensicherung eine Möglichkeit, auch geöffnete Dateien zu kopieren. VBA deshalb, weil mein aDMINISTRATOR keine EXE duldet.

    Die Kopierfunktion aus VBA wie auch der Befehl NAME scheiden deshalb aus.

    CopyFile der WinAPI soll ähnlich wie manuelles Kopieren im Explorer auch bei geöffneten Dateien funktionieren. Dummerweise läuft mein Code nicht fehlerfrei durch:

    Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" _
    (ByVal sourc As String, dest As String, exists As Long) As Long

    Sub kopieren()
    Dim so As String, de As String
    Set fso = CreateObject("scripting.FileSystemObject")
    so = "C:\Users\kg\utf.txt"
    If fso.FileExists(so) = False Then End
    de = "C:\Users\kg\utf.cop"
    MsgBox CBool(CopyFile(so, de, 0)) & vbCrLf & Err.LastDllError
    End Sub

    err.lastdllerror gibt 123 aus. Ich gehe davon aus , dass dieser Fehlercode zu den Windows Errorcodes gehört, dann bedeutet dieser: The filename, directory name, or volume label syntax is incorrect. Ich kann hier jedoch keine falsche Pfad-Angabe erkennen, zumal auch .FileExists True ausgibt.

    Hat jemand eine Idee?

    Betriebssystem ist übrigens XP (mit Win 7 ebenso), die Ausführung erfolgt als Standardnutzer.

    Gruß Tom

    Donnerstag, 14. Februar 2013 18:51