Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Ordner per VBA Anweisung löschen

1,233 views
Skip to first unread message

Heiko Hessler

unread,
Sep 26, 2001, 11:34:45 AM9/26/01
to
Hallo,

wie kann ich einen Ordner per VBA Anweisung löschen?

dankeschön :-)


Robert Gelbmann

unread,
Sep 26, 2001, 12:02:52 PM9/26/01
to
Hi Heiko!

---"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/

Heiko Hessler

unread,
Sep 26, 2001, 1:19:45 PM9/26/01
to

"Robert Gelbmann" <rgel...@mvps.org> schrieb im Newsbeitrag
news:e9x9gTqRBHA.1612@tkmsftngp05...

Hallo,

und wie kriege ich einen gefüllten Ordner gelöscht?

Danke


Frank Arendt-Theilen

unread,
Sep 26, 2001, 1:33:58 PM9/26/01
to
Hallo Heiko,
wie folgt:

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

Heiko Hessler

unread,
Sep 26, 2001, 1:47:27 PM9/26/01
to

"Frank Arendt-Theilen" <Thei...@t-online.de> schrieb im Newsbeitrag
news:3a44rto6viv9mv17h...@4ax.com...

> Hallo Heiko,
> wie folgt:
>
> 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

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


Jennifer Fuß

unread,
Sep 26, 2001, 2:56:44 PM9/26/01
to
On Wed, 26 Sep 2001 19:47:27 +0200, "Heiko Hessler"
<spring...@hotmail.com> wrote:

>
>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

Frank Arendt-Theilen

unread,
Sep 26, 2001, 3:50:54 PM9/26/01
to
Hallo Heiko,
ok, neben der Universalfassung etwas ganz Schlichtes ;-) :

Sub DirLöschen()


Dim Antwort
Set Fs = CreateObject("Scripting.FileSystemObject")

Fs.DeleteFolder "c:\dummy"
End Sub

Michael Schwimmer

unread,
Sep 26, 2001, 5:01:47 PM9/26/01
to
"Heiko Hessler" <spring...@hotmail.com> schrieb im Newsbeitrag
news:#yYc7CqRBHA.1904@tkmsftngp05...

> wie kann ich einen Ordner per VBA Anweisung löschen?
>
Hallo Heiko,
FSO oder API.
Hier ein Bleistift mittels API:

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


Michael Schwimmer

unread,
Sep 26, 2001, 5:01:47 PM9/26/01
to
"Heiko Hessler" <spring...@hotmail.com> schrieb im Newsbeitrag
news:#yYc7CqRBHA.1904@tkmsftngp05...
> wie kann ich einen Ordner per VBA Anweisung löschen?
>
0 new messages