vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Dateisystem · Dateien allgemein   |   VB-Versionen: VB4, VB5, VB627.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 OtterBewertung:  Views:  26.817 
www.tools4vb.deSystem:  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



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.