PDA

Vollständige Version anzeigen : Kann man mit FileCopy auch eine Auswahl wie: *.txt treffen ???


AWSW
16.05.2001, 19:11
Hallo Leute,
Kann man mit FileCopy auch eine Auswahl wie: *.txt in einem Verzeichnis treffen ???

Bisher habe ich nur eine Funktion mit einer Einzelangabe der .txt Dateien erreicht :(

Stefan Kulpa
17.05.2001, 06:21
Hallo,

FileCopy ist dafür nicht geeignet.
Eine mögliche Lösung ist Folgende:

<PRE><FONT SIZE=1 FACE=Courier New><FONT COLOR=#000080>Option</FONT> <FONT COLOR=#000080>Explicit</FONT>

<FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Type</FONT> SHFILEOPSTRUCT
hwnd <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
wFunc <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
pFrom <FONT COLOR=#000080>As String</FONT>
pTo <FONT COLOR=#000080>As String</FONT>
fFlags <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Integer</FONT>
fAborted <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
hNameMaps <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
sProgress <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Type</FONT>

<FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> GetDesktopWindow <FONT COLOR=#000080>Lib</FONT> "user32" () <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Declare</FONT> <FONT COLOR=#000080>Function</FONT> SHFileOperation <FONT COLOR=#000080>Lib</FONT> "shell32.dll" <FONT COLOR=#000080>Alias</FONT> _
"SHFileOperationA" _
(lpFileOp <FONT COLOR=#000080>As</FONT> SHFILEOPSTRUCT) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Public</FONT> <FONT COLOR=#000080>Function</FONT> CopyFiles(asFiles() <FONT COLOR=#000080>As String</FONT>, _
sTarget <FONT COLOR=#000080>As String</FONT>) <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Boolean</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#008000>'// Methode: | Kopiert eine Anzahl Dateien;</FONT>
<FONT COLOR=#008000>'// | Aufruf des "flying windows"-Dialogs</FONT>
<FONT COLOR=#008000>'// | benötigt VBA6+ wegen Join-Funktion</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#008000>'// Parameter: | asFiles = Datenfeld (Array) mit gültigen Pfaden</FONT>
<FONT COLOR=#008000>'// | sTarget = Zielordner</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#008000>'// Rückgabe: | True bei Erfolg</FONT>
<FONT COLOR=#008000>'// -----------------------------------------------------------------</FONT>
<FONT COLOR=#000080>Const</FONT> FO_COPY <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = &H2
<FONT COLOR=#000080>Const</FONT> FOF_RENAMEONCOLLISION <FONT COLOR=#000080>As</FONT> <FONT COLOR=#000080>Long</FONT> = &H8

<FONT COLOR=#000080>Dim</FONT> sFiles <FONT COLOR=#000080>As String</FONT>
<FONT COLOR=#000080>Dim</FONT> uSHFileOp <FONT COLOR=#000080>As</FONT> SHFILEOPSTRUCT

<FONT COLOR=#000080>On Error Resume Next</FONT>
sFiles = VBA.Join(asFiles, vbNullChar)
sFiles = sFiles & vbNullChar
<FONT COLOR=#000080>With</FONT> uSHFileOp
.hwnd = GetDesktopWindow()
.wFunc = FO_COPY
.pFrom = sFiles
.pTo = sTarget
.fFlags = FOF_RENAMEONCOLLISION
<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>With</FONT>
CopyFiles = (SHFileOperation(uSHFileOp) = 0)

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Function</FONT>
<FONT COLOR=#808080><HR></FONT>

<FONT COLOR=#000080>Sub</FONT> Test()

<FONT COLOR=#000080>Dim</FONT> asFiles() <FONT COLOR=#000080>As String</FONT>

<FONT COLOR=#000080>ReDim</FONT> asFiles(1)
asFiles(0) = "C:\TEMP\*.TXT"
<FONT COLOR=#000080>Call</FONT> CopyFiles(asFiles, "C:\TEMP\Test")

<FONT COLOR=#000080>End</FONT> <FONT COLOR=#000080>Sub</FONT>
<FONT COLOR=#808080></FONT>

</FONT></PRE>

Gruß

AWSW
17.05.2001, 07:02
Danke Dir Stefan,
wird gleich getestet :D