Rubrik: Dateisystem · Dateien allgemein | VB-Versionen: VB4, VB5, VB6 | 27.05.03 |
Geöffnete Datei kopieren Ein kleiner Trick und es lassen sich auch Dateien kopieren, die von einer anderen Anwendung in Benutzung sind. | ||
Autor: Dieter Otter | Bewertung: | Views: 26.817 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Haben Sie schon einmal versucht eine Excel-Datei zu kopieren, die aktuell von MS-Excel geöffnet ist?
FileCopy "c:\dokumente\Mappe1.xls", "d:\temp\mappe1.xls"
VB quittiert Ihnen obige Anweisung dann aber leider immer mit einem Laufzeitfehler 70 (Zugriff verweigert)
Mit einem kleinen Trick lassen sich solche Dateien aber dennoch kopieren
Statt der FileCopy-Anweisung verwenden wir einfach unsere eigene Kopier-Funktion. Die Datei wird hierzu im Binary-Mode geöffnet, der Inhalt ausgelesen und dann "kopiert".
Public Function CopyFile(ByVal sSource As String, _ ByVal sDest As String) As Boolean Dim sFile As String Dim F As Integer Dim sBuffer As String On Error Goto ErrHandler ' Quelldatei öffnen und Inhalt auslesen F = FreeFile Open sSource For Binary Shared As #F sBuffer = Space$(LOF(F)) Get #F, , sBuffer Close #F ' Zieldatei ggf. löschen, falls bereits existiert If Dir$(sDest) <> "" Then Kill sDest ' Zieldatei neu erstellen F = FreeFile Open sDest For Binary As #F Put #F, , sBuffer Close #F CopyFile = True On Error Goto 0 Exit Function ErrHandler: CopyFile = False End Function