Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1024to1028
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
Bestimmte Excel-Dateien auflisten
21.11.2008 15:14:00
Hüseyin
Hallo zusammen,
ich habe ein Problem und würde mich über jeden Beitrag freuen.
Ich möchte einen Ordner nach bestimmten Excel-Dateien durchsuchen und am Ende diejenigen, in denen in der Zelle H2 ein "x" steht, auflisten (z.B. in einer MsgBox).
Ich habs nicht so mit Schleifen usw...
Kann mir da jemand helfen?
Vielen Dank!
Gruß
Hüseyin

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bestimmte Excel-Dateien auflisten
21.11.2008 18:31:00
Tino
Hallo,
hier mal ein Beispiel.
Pfad und Dateifilter muss angepasst werden.
Wenn Deine Dateien immer denselben Tabellennamen haben,
z. Bsp. Tabelle1 könnte man dies auch ohne die Datei zu öffnen machen.
Ich hoffe Du kommst damit zurecht?!
Option Explicit

Sub SucheDatei()
Dim Fso, Ordner, varDatei, strWert
Dim SucheDatei$, sDateiName$, sTabName$, strDateiSammler$, sPfad$
Dim meCalc As Integer

sPfad = "C:\Dateiordner"    'Pfad anpassen!!!!!!!!!!!!! 
SucheDatei = "*.xls"        'Suchfilter!!!!!!!!!!!!!!!! 

Set Fso = CreateObject("Scripting.FileSystemObject")
Set Ordner = Fso.getfolder(sPfad)

With Application
meCalc = .Calculation
 .ScreenUpdating = False
 .DisplayAlerts = False
 .Calculation = xlCalculationManual
    
    'Schleife über alle Dateien im Ordner 
    For Each varDatei In Ordner.Files
     If varDatei Like SucheDatei Then 'prüfe Dateiname 
        sDateiName = Right$(varDatei, Len(varDatei) - InStrRev(varDatei, "\")) 'Dateiname 
        strWert = LeseTabname(CStr(varDatei)) 'Funktion lese Zelle H2 
        If strWert Like "x" Then strDateiSammler = strDateiSammler & Chr(10) & sDateiName 'prüfe ob x 
     End If
    Next varDatei
 
 .ScreenUpdating = True
 .DisplayAlerts = True
 .Calculation = meCalc
End With
MsgBox strDateiSammler, vbInformation


End Sub

Function LeseTabname(strFile As String) As String
Dim objDatei As Workbook
Set objDatei = Workbooks.Open(strFile, False, True)
    LeseTabname = objDatei.Sheets(1).Range("H2")
objDatei.Close False
End Function


Gruß Tino

Anzeige
AW: Bestimmte Excel-Dateien auflisten
24.11.2008 12:01:46
fcs
Hallo Hüseyin,
hier auch noch mein Vorschlag.
Das zu durchsuchende Verzeichnis und der Filter für die Dateien werden dabei vom Makro abgefragt.
Die Ergebnisausgabe erfolgt in eine neues Tabellenblatt und in eien Msgox.
Gruß
Franz

'# Dateien auf Wert in Zelle H2 prüfen                                #
'# Ersteller: fcs                                                     #
'# Datum    : 2008-11-23                                              #
'# Excelversion: 97 SP 2                                              #
Option Explicit
Sub Check_H2()
Dim varVerzeichnis, objFileSearch As FileSearch, intI, objWb As Workbook
Dim strMsg, intDatei As Integer, varErgebnis, strFilter As String
Dim intCount As Integer, lngZeile As Long
Dim objWks As Worksheet
Const strZelle As String = "H2"   'Auszuwertende Zelle
Const varWert = "X"               'Prüfwert
Const varTabelle = 1              'Nummer oder Name der zu Prüfenden Tabelle
On Error GoTo Fehler
'zu durchsuchendes Verzeichnis auswählen ### Name des Startverzeichnisses anpssen!!
varVerzeichnis = fncDateiAuswahl(strVerzeichnis:="C:\Eigene Dateien\Test\Daten", _
strTitel:="Zur Verzeichnis-Auswahl Datei wählen und öffnen", _
bolDatei:=False)
If varVerzeichnis = False Then GoTo Beenden
'Filter für Dateisuche eingeben
strFilter = VBA.InputBox(Prompt:="Bitte Filter für Dateisuche im Verzeichnis" _
& vbLf & vbLf & varVerzeichnis & vbLf & vbLf & "eingeben", _
Title:="Filter für Dateisuche", Default:="*.xls")
If strFilter = "" Then GoTo Beenden
'Dateien suchen und auswerten
Set objFileSearch = Application.FileSearch
With objFileSearch
.NewSearch
.LookIn = varVerzeichnis
.FileName = strFilter
.SearchSubFolders = False
If .Execute > 0 Then
Application.ScreenUpdating = False
'Tabellenblatt einfügen für Ergebnisausgabe
ActiveWorkbook.Worksheets.Add
Set objWks = ActiveSheet
'Spaltentitel eintragen
With objWks
lngZeile = 1
.Cells(lngZeile, 1) = "Verzeichnis:"
.Cells(lngZeile, 2) = varVerzeichnis
lngZeile = 2
.Cells(lngZeile, 1) = "Filter:"
.Cells(lngZeile, 2) = strFilter
lngZeile = 3
.Cells(lngZeile, 1) = "Nummer"
.Cells(lngZeile, 2) = "Dateiname"
.Cells(lngZeile, 3) = "Wert " & strZelle
End With
'Fenster unter Spaltentiteln fixieren
Cells(lngZeile + 1, 1).Select
ActiveWindow.FreezePanes = True
'Dateien auswerten
For intDatei = 1 To .FoundFiles.Count
'Statusmeldung für Arbeitsfortschritt
Application.StatusBar = "Datei " & intDatei & " von " & .FoundFiles.Count _
& " wird ausgewertet, Dateiname: " & .FoundFiles(intDatei)
'Datei schreibgeschützt öffnen
Set objWb = Application.Workbooks.Open(FileName:=.FoundFiles(intDatei), _
ReadOnly:=True)
'Wert aus Zelle in Tabelle auslesen
varErgebnis = objWb.Worksheets(varTabelle).Range(strZelle).Value
'Dateiname und Wert in Zelle in Tabellenblatt eintragen
lngZeile = lngZeile + 1
objWks.Cells(lngZeile, 1) = intDatei
objWks.Cells(lngZeile, 2) = objWb.Name
objWks.Cells(lngZeile, 3) = varErgebnis
If LCase(varErgebnis) = LCase(varWert) Then
'Meldetext um Dateinamen ergänzen
intCount = intCount + 1
strMsg = strMsg & vbLf & intCount & "   : " & .FoundFiles(intDatei)
End If
Resume01:
objWb.Close savechanges:=False
Set objWb = Nothing
Next
'Im Ausgabetabellenblatt
With objWks
'Spalten formatieren
.Range(.Columns(1), .Columns(3)).EntireColumn.AutoFit
.Columns(3).EntireColumn.HorizontalAlignment = xlHAlignCenter
'Zählenformel einfügen in Zelle C2
.Range("C2").Formula = "=COUNTIF(" & .Range(.Cells(4, 3), _
.Cells(lngZeile, 3)).Address(ReferenceStyle:=xlR1C1) & ",""X"")"
End With
Application.StatusBar = False
Application.ScreenUpdating = True
'Ergebnis in Messagebox ausgeben
If strMsg  "" Then
strMsg = "Auswertung Zelle H2 in Dateien:" & vbLf & strMsg
MsgBox strMsg, vbOKOnly, "Liste Dateien mit " & varWert & " in Zelle " _
& strZelle
Else
MsgBox "Auswertung Zelle H2 in Dateien:" & vbLf & vbLf _
& "Keine Dateien mit " & varWert & " in Zelle " _
& strZelle & " gefunden!", vbOKOnly, "Liste Dateien mit " & varWert _
& " in Zelle " & strZelle
End If
Else
MsgBox strMsg & vbLf & vbLf & "Keine Dateien für Filter """ & strFilter & """" _
& vbLf & "in Verzeichnis  """ & varVerzeichnis & """", _
vbOKOnly, "Liste Dateien mit """ & varWert & """ in Zelle " & strZelle
End If
End With
Beenden:
'Fehlerbehandlung
Fehler:
With Err
If .Number  0 Then
Select Case .Number
Case 13 ' Typen unverträglich - Zellenauswertung liefert Fehler-Wert
Resume Resume01
Case Else
MsgBox "Fehler-Nr. " & .Number & vbLf & .Description
End Select
If Not objWb Is Nothing Then objWb.Close savechanges:=False
Application.StatusBar = False
Application.ScreenUpdating = True
End If
End With
End Sub
Public Function fncDateiAuswahl(Optional strVerzeichnis As String, _
Optional strFilter As String = "Excel(*.xls),*.xls", _
Optional strTitel As String = "Bitte zu öffnende Datei wählen", _
Optional bolMultiselect As Boolean = False, _
Optional bolVerzeichniswechseln As Boolean = False, _
Optional bolDatei As Boolean = True)
'Funktion ermöglicht entsprechend den gewählten Parametern die Auswahl eines _
Verzeichnisses oder von Dateien im Datei-Öffnen-Dialogdenster
' strVerzeichnis = Startverzeichnis für Dateiauswahl
' strFilter = Filter für auswählbare Dateien
' strTitel = "Titel des Dialogfensters
' bolMultiselect = Multiselektion Ja/Nein
' bolVerzeichniswechseln = Ja/Mein ;True: Das gewählte Verzeichnis wird zum aktiven  _
Verzeichnis
' bolDatei = Ja/Nein; False: Nur das gewählte Verzeichnis wird als Wert zurückgegeben
Dim varAuswahl, strVerzAktiv As String
On Error GoTo Fehler
If bolVerzeichniswechseln = False Then
'Aktuelles Verzeichnis merken
strVerzAktiv = VBA.CurDir
End If
If strVerzeichnis  "" Then
'In vorgegbenen Verzeichnis wechseln
VBA.ChDir strVerzeichnis
End If
'Dateiauswahl-Dialog anzeigen
varAuswahl = Application.GetOpenFilename(Filefilter:=strFilter, _
Title:=strTitel, MultiSelect:=bolMultiselect)
If bolDatei = True Then
'Dateiauswahl an Funktionswert übergeben
fncDateiAuswahl = varAuswahl
Else
'Aktives Verzeichnis an Funktionswert übergeben
If varAuswahl = False Then
fncDateiAuswahl = False
Else
fncDateiAuswahl = VBA.CurDir
End If
End If
If bolVerzeichniswechseln = False Then
'gemerktes Verzeichnis wieder einstellen
VBA.ChDir strVerzAktiv
End If
'Fehlerbehandlung
Fehler:
With Err
If .Number  0 Then
MsgBox "fehler-Nr. " & .Number & vbLf & .Description & vbLf _
& vbLf & "Vorgegebenes Verzeichnis """ & strVerzeichnis & """ existiert nicht!"
Resume Next
End If
End With
End Function


Anzeige
AW: Bestimmte Excel-Dateien auflisten
22.11.2008 10:37:00
Erich
Hallo Hüseyin,
bei der Aufgabenstellung fehlt noch, in welchem Blatt (oder in welchen Blättern) der Mappe
die Zelle H2 geprüft werden soll. (In einer Mappe lann es in vielen Blättern eine Zelle H2 geben.)
Die Codes gehen davon aus, dass im 1. Worksheet geprüft werden soll.
Hier noch zwei Varianten:

Option Explicit
Sub SucheH2xMsg()
Dim strVz As String, strN As String, lngZ As Long
Dim wbk As Workbook, strErg As String, Calc As XlCalculation
strVz = "c:\temp"             ' Verzeichnis anpassen
strN = Dir(strVz & "\*.xls")
Calc = Application.Calculation:    Beschleuniger
While strN > ""
If strN  ThisWorkbook.Name Then
On Error Resume Next
Set wbk = Workbooks.Open(strVz & strN, UpdateLinks:=False, _
ReadOnly:=True, Password:="")
If Err  0 Then Err.Clear
If strN = ActiveWorkbook.Name Then
If Worksheets(1).Cells(2, 8) & "" = "x" Then
lngZ = lngZ + 1
strErg = strErg & strN & vbLf
End If
End If
wbk.Close SaveChanges:=False
End If
strN = Dir()
Wend
Beschleuniger Calc
MsgBox lngZ & " Dateien:" & vbLf & Left(strErg, Len(strErg) - 1)
End Sub
Sub SucheH2xTab()
Dim strVz As String, strN As String, lngZ As Long, arrNam() As String
Dim wbk As Workbook, strErg As String, lngI As Long
Dim Calc As XlCalculation
strVz = "c:\temp"             ' Verzeichnis anpassen
strN = Dir(strVz & "\*.xls")
ReDim arrNam(1 To 100)
Calc = Application.Calculation:    Beschleuniger
While strN > ""
lngI = lngI + 1
If strN  ThisWorkbook.Name Then
On Error Resume Next
Set wbk = Workbooks.Open(strVz & strN, UpdateLinks:=False, _
ReadOnly:=True, Password:="")
If Err  0 Then Err.Clear
If strN = ActiveWorkbook.Name Then
If Worksheets(1).Cells(2, 8) & "" = "x" Then
lngZ = lngZ + 1
If lngZ > UBound(arrNam) Then ReDim Preserve arrNam(1 To lngZ + 100)
arrNam(lngZ) = strN
strErg = strErg & strN & vbLf
End If
End If
wbk.Close SaveChanges:=False
If ThisWorkbook.Name  ActiveWorkbook.Name Then _
wbk.Close SaveChanges:=False
End If
Application.StatusBar = lngI & " / " & lngZ & " : " & strN
DoEvents
strN = Dir()
Wend
'  MsgBox lngZ & " Dateien:" & vbLf & Left(strErg, Len(strErg) - 1)
If lngZ > 0 Then                                       ' Ausgabe in akt. Tabelle
ReDim Preserve arrNam(1 To lngZ)
Cells(2, 1).Resize(lngZ) = Application.Transpose(arrNam)
End If
Application.StatusBar = False
Beschleuniger Calc
End Sub
' Aufruf mit
'   Dim Calc As XlCalculation
'   Calc = Application.Calculation: Beschleuniger
'   ....Code....
'   Beschleuniger Calc
Sub Beschleuniger(Optional StatCal As Variant)
If IsMissing(StatCal) Then
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Else
Application.ScreenUpdating = True
Application.Calculation = StatCal
Application.EnableEvents = True
End If
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Bestimmte Excel-Dateien auflisten
23.11.2008 21:25:50
Hüseyin
Hallo,
danke euch beiden sehr! Hab aber erst in einpaar Tagen wieder die Möglichkeit daran zu arbeiten. Aber ihr bekommt auf jeden Fall ein Feedback von mir.
Gruß
Hüseyin

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige