Dim
dateien()
Option
Explicit
Sub
DateienLesen2()
Dim
DateiName
As
String
Dim
quelle
As
String
Dim
i
As
Long
Dim
j
As
Long
Dim
Dateialt
As
String
Dim
zeilealt
As
Long
Dim
Namekurz
As
String
Dim
Blatt
As
Object
Dim
gefunden
As
Boolean
Dim
suchwert
As
Variant
Dim
suche
As
Variant
Application.ScreenUpdating =
False
Dateialt = ThisWorkbook.Name
zeilealt = 1
ActiveSheet.Columns(1).ClearContents
suchwert = InputBox(
"Zu suchenden Wert eingeben!"
,
"Suchtexteingabe"
)
If
suchwert =
""
Then
MsgBox
"Sie haben keinen Wert eingegeben oder Abbrechen angeklickt. Das Program wird beendet."
, ,
"Abbruch Eingaben"
End
End
If
ReDim
dateien(0)
dateien(0) = 0
quelle =
"V:\0101\SCHULEN\0-FAHRT"
If
Right(quelle, 1) = "\"
Then
quelle = Left(quelle, Len(quelle) - 1)
If
Dir(quelle &
"\") = "
"
Then
MsgBox
"Der Pfad wurde nicht gefunden!"
End
End
If
Call
txtsuchen2(
"1"
& quelle)
If
dateien(0) = 0
Then
MsgBox
"Keine .txt Dateien gefunden!"
Else
For
i = 1
To
dateien(0)
DateiName = dateien(i)
Namekurz = Right(DateiName, InStr(1, StrReverse(DateiName), "\") - 1)
gefunden =
False
Workbooks.Open DateiName, Password:=
"ABC"
,
ReadOnly
:=
True
For
Each
Blatt
In
Worksheets
suche = Application.WorksheetFunction.CountIf(ActiveSheet.UsedRange, suchwert &
"*"
)
If
suche > 0
Then
gefunden =
True
Next
Blatt
Workbooks(Dateialt).Activate
Workbooks(Namekurz).Close savechanges:=
False
If
gefunden =
True
Then
ActiveSheet.Hyperlinks.Add anchor:=ActiveSheet.Cells(zeilealt, 1), Address:=DateiName, TextToDisplay:=Namekurz
zeilealt = zeilealt + 2
End
If
Next
i
End
If
End
Sub
Function
txtsuchen2(pfads
As
String
)
Dim
suche
Dim
i
As
Long
Dim
quelle
As
String
Dim
oOrdner
Dim
oDateien
Dim
datsystem
Dim
knoten
Dim
datei
Dim
ablage
Dim
dname
As
String
Dim
onam
As
String
Dim
anfang
Set
datsystem = CreateObject(
"Scripting.FileSystemObject"
)
quelle = pfads
anfang = Left(pfads, 1)
quelle = Right(pfads, Len(pfads) - 1)
ChDrive (Left(quelle & "\", 3))
ChDir (quelle)
Set
knoten = datsystem.getfolder(quelle)
Set
oDateien = knoten.Files
Set
oOrdner = knoten.subFolders
For
Each
ablage
In
oOrdner
onam = ablage.Name
If
Left(onam, 1) <>
"."
Then
If
anfang <>
"x"
Then
If
anfang = 2
Then
Call
txtsuchen2(
"x"
& ablage.Path)
Else
Call
txtsuchen2((anfang + 1) & ablage.Path)
End
If
Else
If
InStr(1, onam,
"16"
, 1) > 0
Or
InStr(1, onam,
"Region"
, 1) > 0
Or
InStr(1, onam,
"Rahmenvertrag"
, 1) > 0
Or
InStr(1, onam,
"Abrechnung"
, 1) > 0
Then
If
InStr(1, onam,
"Änderung"
, 1) > 0
Or
InStr(1, onam,
"Fahrpl"
, 1) > 0
Or
InStr(1, onam,
"14"
, 1) > 0
Or
InStr(1, onam,
"13"
, 1) > 0
Or
InStr(1, onam,
"12"
, 1) > 0
Or
InStr(1, onam,
"11"
, 1) > 0
Or
InStr(1, onam,
"10"
, 1) > 0
Then
Else
Call
txtsuchen2(
"x"
& ablage.Path)
End
If
End
If
End
If
End
If
Next
ablage
If
oOrdner.Count = 0
Then
For
Each
datei
In
oDateien
dname = datei.Name
If
Left(dname, 1) <>
"."
Then
If
Right(dname, 4) =
".xls"
Then
If
(InStr(1, dname,
"_Planung"
, 1) > 0
Or
InStr(1, dname,
"_planung"
, 1) > 0
Or
InStr(1, dname,
"_PLANUNG"
, 1) > 0)
And
InStr(1, dname,
"2016"
, 1) > 0
Then
dateien(0) = dateien(0) + 1
ReDim
Preserve
dateien(dateien(0))
dateien(dateien(0)) = datei.Path
End
If
End
If
End
If
Next
datei
End
If
Set
datsystem =
Nothing
Set
knoten =
Nothing
Set
oDateien =
Nothing
Set
oOrdner =
Nothing
Application.ScreenUpdating =
True
End
Function