Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
944to948
944to948
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wo liegt bloß der Fehler

Wo liegt bloß der Fehler
25.01.2008 12:46:00
THorsten
Hallo miteinander,
ich habe ein Makro, welches prüfen soll, ob in einem Verzeichnis eine Datei vorhanden ist. Leider meldet mir das Makro immer, es ist etwas vorhanden, auch wenn gar nichts da ist. Was läuft falsch?

Sub holen()
Name = ActiveWorkbook.Name
Set fs = CreateObject("Scripting.FileSystemObject")
If fs.folderexists("K:\") = True Then
MsgBox "Es befinden sich noch Dateien auf Laufwerk K:, Du solltest die bringen.bat ( _
Symbolleiste 'K räumen' ausführen"
frage = MsgBox("Willst Du das jetzt machen?", vbYesNo)
If frage = 6 Then End
If frage = 7 Then GoTo weiter:
End If
Set fs = Application.FileSearch
With fs
.LookIn = "k:\"
.Filename = "*.*"
If .Execute(SortBy:=msoSortByFileName, _
SortOrder:=msoSortOrderAscending) > 0 Then
MsgBox "Es wurden " & .FoundFiles.Count & _
" Datei (en) gefunden."
For i = 1 To .FoundFiles.Count
MsgBox .FoundFiles(i)
Next i
Else
MsgBox "K: ist leer"
End If
End With
weiter:
welche = InputBox("Welche Angebotsmappe möchtest Du abholen?")
Set fs = CreateObject("Scripting.FileSystemObject")
On Error GoTo fehler:
fs.Copyfolder "\\server\untiefe\angebote\" & welche, "k:\"
neu = welche
welche = ""
weiter = MsgBox("weitere Angebotsmappen?", vbYesNo)
If weiter = 6 Then GoTo weiter Else GoTo ende:
fehler:
MsgBox "Mappe nicht gefunden"
ende:
Workbooks.Open "k:\" & neu & "\" & neu & ".xls"
Workbooks(Name).Close False
End Sub


5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wo liegt bloß der Fehler
25.01.2008 12:54:00
Andi
Hi,
ich hab mir Deinen Code jetzt nicht im Detail angesehen, aber die einfachste Methode (die im Gegensatz zu Filesearch auch mit XL2007 kompatibel ist), um festzustellen ob ein Ordner leer ist oder nicht, wäre folgende:

Sub t()
Select Case Dir("C:\test\*.*")
Case Is = ""
MsgBox "Ordner ist leer"
Case Else
MsgBox "Ordner ist nicht leer"
End Select
End Sub


Schönen Gruß,
Andi

AW: Wo liegt bloß der Fehler
25.01.2008 14:14:00
THorsten
Hab ich probiert, aber jetzt kommt immer die Meldung, das nichts da ist, obwohl der Ordner nicht leer ist.

AW: Wo liegt bloß der Fehler
25.01.2008 14:21:00
Andi
Hi,
bist Du sicher, dass der Pfad korrekt ist?
Wenn der Pfad nicht existiert, gibt Dir auch "" zurück.
Schönen Gruß,
Andi

Anzeige
AW: Wo liegt bloß der Fehler
25.01.2008 14:39:00
dan
Hi,
hier ein beisp. mit FileSystemObject. Fuer diesen Code braucht man die Bibliothek Microsoft runtime zu referenzieren. Gruss Dan, cz.
Option Explicit

Public Sub Main()
Dim fs As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim testedFolderPath As String
Set fs = New Scripting.FileSystemObject
testedFolderPath = "c:\temp"
On Error Resume Next
Err.Clear
Set fld = fs.GetFolder(testedFolderPath)
If (Err.Number = 0) Then
MsgBox IsFolderEmpty(fld), vbInformation, "folder is empty"
ElseIf (Err.Number = 76) Then
MsgBox Err.Description, vbCritical, "Getting folder error"
' path not found code ...
Else
MsgBox Err.Description, vbCritical, "Getting folder error"
End If
End Sub



Public Function IsFolderEmpty(ByVal testedFolder As Scripting.Folder) As Boolean
Dim returnValue As Boolean
If (testedFolder.Files.Count = 0) Then
returnValue = True
Else
returnValue = False
End If
IsFolderEmpty = returnValue
End Function


Anzeige
AW: Wo liegt bloß der Fehler
25.01.2008 18:00:04
Holger
Hallo THorsten,
auch wenn dir bereits Lösungen angeboten werden, will ich sagen, wo dein Fehler steckt.
Du prüfst mit
If fs.folderexists("K:\") = True Then
nicht, ob noch Dateien ein K:\ sind, sondern nur, ober der Ordner existiert.
Dazu musst du prüfen, ob Unterordner oder Dateien im Ordner enthalten sind, z.B. mit
c = "Das zu untersuchende Verzeichnis"
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.folderexists(c) = False Then MsgBox "Ordner nicht vorhanden, ...": Exit Sub
Set fldr = fso.getfolder(c) 'Quellrechner
Set sfldr = fldr.subfolders
Set fls = fldr.files
If sfldr.Count = 0 and fls.Count = 0 Then
MsgBox "Ordner leer"
Else
MsgBox "Ordner nicht leer"
End If
Übrigens: Deine Zeilen nach "If frage = 7 Then GoTo weiter:" bis "weiter:" werden nie durchlaufen, weil du entweder das Programm beendest oder bei "weiter:" weitermachst.
Viel Erfolg
Holger
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige