wie kann ich einen Ordner per VBA Anweisung löschen?
dankeschön :-)
---"Heiko Hessler" <spring...@hotmail.com> schrieb ...
> Hallo,
>
> wie kann ich einen Ordner per VBA Anweisung löschen?
>
> dankeschön :-)
Ja, mit der RmDir-Anweisung:
RmDir "C:\dummy"
Selbstverständlich muss der Ordner aber leer sein!!
--
In der Hoffnung damit behilflich gewesen zu sein, verbleibe ich mit einem
leisen
Servus aus Wien,
-Robert Gelbmann-
---
MS MVP CE for Excel
Excel-FAQ's: http://www.roehrenbacher.at/erc/faq/
Hallo,
und wie kriege ich einen gefüllten Ordner gelöscht?
Danke
Public Type BROWSEINFO
hOwner As Long
pidlRoot As Long
pszDisplayName As String
lpszTitle As String
ulFlags As Long
lpfn As Long
lParam As Long
iImage As Long
End Type
Declare Function SHGetPathFromIDList Lib "shell32.dll" _
Alias "SHGetPathFromIDListA" _
(ByVal pidl As Long, ByVal pszPath As String) As Long
Declare Function SHBrowseForFolder Lib "shell32.dll" _
Alias "SHBrowseForFolderA" (lpBrowseInfo As BROWSEINFO) As Long
Sub DirLöschen()
Dim Ordner As String
Dim Msg As String
Dim Fs
Dim Antwort
Set Fs = CreateObject("Scripting.FileSystemObject")
Msg = "Wählen Sie bitte einen Ordner aus:"
Ordner = GetDirectory(Msg)
Antwort = MsgBox("Soll wirklich der Ordner" & vbLf & Ordner _
& vbLf & _
" mit allen Dateien und Unterverzeichnissen gelöscht werden?", _
vbYesNo)
If Antwort = vbYes Then
Fs.DeleteFolder Ordner
End If
End Sub
Function GetDirectory(Optional Msg) As String
Dim bInfo As BROWSEINFO
Dim Path As String
Dim r As Long, x As Long, pos As Integer
bInfo.pidlRoot = 0&
If IsMissing(Msg) Then
bInfo.lpszTitle = "Wählen Sie bitte einen Ordner aus."
Else
bInfo.lpszTitle = Msg
End If
bInfo.ulFlags = &H1
x = SHBrowseForFolder(bInfo)
Path = Space$(512)
r = SHGetPathFromIDList(ByVal x, ByVal Path)
If r Then
pos = InStr(Path, Chr$(0))
GetDirectory = Left(Path, pos - 1)
Else
GetDirectory = ""
End If
End Function
Wichtig:
Verweis auf Microsoft Scripting Runtime SCRRUN.DLL im Menü
Extras/Verweise des VBE setzen.
MfG Frank
_____________________________________________________
Frank Arendt-Theilen, Microsoft MVP für Excel, Hameln
E-Mail: Thei...@t-online.de
Hi,
ich traue mich kaum zu fragen.. und wenn ich einfach nur einen bestimmten
Ordner , z:b: c:\dummy löschen möchte?
dankeschön
>
>Hi,
>
>ich traue mich kaum zu fragen.. und wenn ich einfach nur einen bestimmten
>Ordner , z:b: c:\dummy löschen möchte?
Hallo,
z.B. so:
Public Sub DeleteOrdner()
'Loeschen der enthaltenen Dateien
Call Kill("C:\dummy\*.*")
'Loeschen des Verzeichnis
Call RmDir("C:\dummy\")
End Sub
MfG
Jennifer
Sub DirLöschen()
Dim Antwort
Set Fs = CreateObject("Scripting.FileSystemObject")
Fs.DeleteFolder "c:\dummy"
End Sub
Private Declare Function SHFileOperation _
Lib "shell32.dll" Alias "SHFileOperationA" _
(lpFileOp As Any) As Long
Private Type SHFILEOPSTRUCT
hwnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAnyOperationsAborted As Long
hNameMappings As Long
lpszProgressTitle As String
End Type
Private Const FO_DELETE = &H3
Private Const FO_MOVE = &H1
Private Const FO_RENAME = &H4
Private Const FO_COPY = &H2&
Private Const FOF_RENAMEONCOLLISION = &H8
Private Const FOF_NOCONFIRMMKDIR = &H200
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_MULTIDESTFILES = &H1
Private Const FOF_ALLOWUNDO = &H40
Sub Testen()
'Erst mal zum Testen ein Verzeichnis mit
'Unterverzeichnissen und Dateien anlegen
XXL_Copy
'Dann das soeben angelegte löschen.
VerzeichnisLöschen
End Sub
Sub XXL_Copy()
Dim QuellVerzeichnis As String, _
Zielverzeichnis As String
Dim udtXCopy As SHFILEOPSTRUCT
'Ein vorhandenes Verzeichnis mit
'Unterverzeichnissen und Dateien
QuellVerzeichnis = "C:\Download" & _
vbNullChar & vbNullChar
'Zielverzeichnis. Wenn nicht vorhanden
'wird es mitsamt Pfad erstellt
Zielverzeichnis = "C:\Abc\Def\" _
& Format$(Now - 1, "DD.MM.YYYY") _
& vbNullChar & vbNullChar
With udtXCopy
.wFunc = FO_COPY
.pFrom = QuellVerzeichnis
.pTo = Zielverzeichnis
.fFlags = FOF_MULTIDESTFILES _
Or FOF_NOCONFIRMATION _
Or FOF_NOCONFIRMMKDIR
End With
If SHFileOperation(udtXCopy) <> 0 _
Then MsgBox "Fehler beim Kopieren"
End Sub
Sub VerzeichnisLöschen()
Dim QuellVerzeichnis As String, _
Zielverzeichnis As String
Dim udtXCopy As SHFILEOPSTRUCT
QuellVerzeichnis = "C:\Abc\Def\" _
& Format$(Now - 1, "DD.MM.YYYY") _
& vbNullChar & vbNullChar
Zielverzeichnis = vbNullString & _
vbNullChar & vbNullChar
With udtXCopy
.wFunc = FO_DELETE
.pFrom = QuellVerzeichnis
.pTo = Zielverzeichnis
.fFlags = FOF_MULTIDESTFILES _
Or FOF_NOCONFIRMATION _
Or FOF_NOCONFIRMMKDIR _
Or FOF_ALLOWUNDO ' In den Papierkorb
End With
If SHFileOperation(udtXCopy) <> 0 _
Then MsgBox "Fehler beim Löschen"
End Sub
MfG
Michael