Hallo! Also wenn du xls Dateien hast, kann ich es so lassen. HIer mal eine Codeergänzung.
1. ist ergänzt, (Planung in andere Schreibweise)
3. wird auch erledigt. Bei Abbruch oder keiner Eingaben wird abgebrochen
5. ist ergänzt ( SUche nach Name)
2. kann man einstellen. Nach dem Speichern im Code kommt das hier:
If gefunden = True Then
ActiveSheet.Hyperlinks.Add anchor:=ActiveSheet.Cells(zeilealt, 1), Address:=DateiName, TextToDisplay:=Namekurz
zeilealt = zeilealt + 2
End If
Da wird beim Anchor die Zelle festgelegt, wo der Link eingefügt wird. Dies kann man nach belieben abändern. 1 steht für Spalte A und zeilealt wird immer um 2 erhöht. Ansonsten mal schreiben wo bzw. wie die eingefügt werden sollen und ich ergänze das.
4. Also was ich so gelesen habe, müsste das Klappen. Entweder mit dem V: oder mit \\servername . Habe hier keine Server, kann dass morgen dann mal auf der Arbeit testen.
Falls es nicht will, bitte mal den Code durchgehen. Dazu den Vb Editor öffnen und in die SUB mit Links klicken. Dann die F8 Taste drücken. Mit jedem drücken, gehst du den Code zeilenweise durch. Die gelben Zeile wird dann als nächstes ausgeführt. Nach kanpp 25 klicks bist du in der Funktion txtauslesen. Wenn die Zeile hier
suche = Dir(quelle & "\*.*", vbDirectory)
gelb ist mal mit der Maus auf quelle gehen. Je nach Einstellung zeigt er dir dann den Wert von Quelle an. Da sollte dann der Pfad stehen. wo er beginnt. Alternativ habe ich mal eine Messagebox eingfügt. Die zeigt dir immer, wenn ein neuer Ordner geöffnet wurde, den Pfad des Ordners an (falls du ganz ganz viele Ordner hast, das evtl. wieder rausnehmen - der zeigt dir sonst wirklich den Pfad von jedem Ordner der nach deinem Startpfad kommt an - also nur Ordner nicht Dateien). Da dann einfach mal schauen, ob sich der Pfad wirklich auf den Server bezieht oder wieder in dein Standartlaufwerk hüpft. Dann können wir es evtl. eingrenzen. Hier wieder der Code - den Pfad wieder ergänzen. Es steht auf xls.
Viele Grüße
Dim dateien()
Option Explicit
Sub DateienLesen()
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
Dateialt = ThisWorkbook.Name
zeilealt = 1
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 = "C:\Users\ich\Desktop\Programmieung" 'Pfad eintragen
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 txtsuchen(quelle)
If dateien(0) = 0 Then
MsgBox "Keine .txt Dateien gefunden!"
Else
'Daten auslesen
For i = 1 To dateien(0)
DateiName = dateien(i)
Namekurz = Right(DateiName, InStr(1, StrReverse(DateiName), "\") - 1)
gefunden = False
'die Mappen aufmachen
Workbooks.Open DateiName, Password:="ABC"
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 txtsuchen(quelle As String)
Dim suche
Dim ordner()
Dim i As Long
ReDim ordner(0)
ordner(0) = 0
'ChDrive (Left(quelle & "\", 3))
ChDir (quelle)
MsgBox quelle
'Ordner durchschauen
suche = Dir(quelle & "\*.*", vbDirectory)
Do Until suche = ""
'Normale Dateien rausfiltern
If (GetAttr(quelle & "\" & suche) = 16) Then
'die hier ankommen, sind Ordner, extra speichern
ordner(0) = ordner(0) + 1
ReDim Preserve ordner(ordner(0))
ordner(ordner(0)) = suche
Else
If Right(suche, 4) = ".xls" Then 'ggf. noch an xlsx anpassen etc. aber auch die Zahl dazu
If (Len(suche) <> Len(Replace(suche, "_Planung", "")) Or Len(suche) <> Len(Replace(suche, "_planung", "")) Or Len(suche) <> Len(Replace(suche, "_PLANUNG", ""))) And Len(suche) <> Len(Replace(suche, "2016", "")) Then
dateien(0) = dateien(0) + 1
ReDim Preserve dateien(dateien(0))
dateien(dateien(0)) = quelle & "\" & suche
End If
End If
End If
suche = Dir()
Loop
'jetzt durch die Ordner gehen
For i = 1 To UBound(ordner)
If Dir(ordner(i), vbNormal) = "" And Left(ordner(i), 1) <> "." Then
Call txtsuchen(quelle & "\" & ordner(i))
ChDir (quelle)
End If
Next
End Function
|