Tipp 1.12 - Dateien verschieben

Wie kann ich Dateien mit den Flying Windows verschieben?

Mit dieser Funktion können Sie Dateien mit den Flying Windows verschieben. Kopieren Sie einfach nachfolgenden Quellcode in die Zwischenablage und fügen Sie anschließend den Inhalt der Zwischenablage in ein neues Modul ein. Die Aufrufparameter finden Sie im Quellcode beschrieben.

Api-AufrufeVerwendete Win32-Api-Aufrufe und Typen: SHFileOperation - SHFILEOPSTRUCT

Beispiel:

Option Explicit
 
Public Type SHFILEOPSTRUCT
  hwnd                   As Long
  wFunc                  As Long
  pFrom                  As String
  pTo                    As String
  fFlags                 As Integer
  fAborted               As Long
  hNameMaps              As Long
  sProgress              As String
End Type
 
Public Declare Function SHFileOperation _
    Lib "shell32.dll" Alias _
    "SHFileOperationA" _
    (lpFileOp As SHFILEOPSTRUCT) _
    As Long
 
Public Function MoveFiles( _
                sFileArray() As String, _
                sDestination As String, _
                Optional bDoSilent As Boolean = True) _
                As Long
  '// -----------------------------------------------------
  '// Methode:   | Verschiebt eine Anzahl Dateien;
  '//            | Aufruf des "flying windows"-Dialogs
  '//            | benötigt VBA6+ wegen Join-Funktion
  '// -----------------------------------------------------
  '// Parameter: | asFiles = Datenfeld (Array) mit
  '//            |           gültigen Pfaden
  '//            | sTarget = Zielordner
  '// -----------------------------------------------------
  '// Rückgabe:  | True bei Erfolg
  '// -----------------------------------------------------
  '// Autor:     | Stefan Kulpa
  '//            | EDV Innovation & Consulting - Dormagen
  '// -----------------------------------------------------
 
  Const FOF_NOCONFIRMATION    As Long = &H10
  Const FOF_NOCONFIRMMKDIR    As Long = &H200
  Const FOF_SILENT            As Long = &H4
  Const FO_MOVE               As Long = &H1
  Dim uSHFileOp               As SHFILEOPSTRUCT
  Dim sFiles                  As String
  sFiles = VBA.Join(sFileArray, vbNullChar)
  sFiles = sFiles & vbNullChar
  With uSHFileOp
    .wFunc = FO_MOVE
    .pFrom = sFiles
    .pTo = sDestination
    If bDoSilent Then
      .fFlags = FOF_SILENT Or _
          FOF_NOCONFIRMATION Or _
          FOF_NOCONFIRMMKDIR
    End If
  End With
  MoveFiles = SHFileOperation(uSHFileOp)
 
End Function