Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
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
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Durchsuchen von Exceldeteien

Durchsuchen von Exceldeteien
25.06.2006 10:49:22
Exceldeteien
Hallo, hab schon vor einer Woche mich mal mit dieser frage gemeldet. Anscheinend hat keiner geantwortet weil ich meinen Beitrag nicht mehr finde.
Ich hoffe es kann mir dieses Mal jemenad weiter helfen, folgende Bitte hätte ich, falls dies überhaupt realisierbar ist.
Ich habe einen Ordner in welchem zig xls Dateien liegen. Nun ist es so, dass es möglich wäre das in jeder xls datei der selbe Eintrag steht, dies muss aber nicht der Fall sein, könnte auch vorkommen das der gesuchte Eintrag in nur einer xls Datei vorkommt.
Also nehmen wir mal an ich suche nach dem Begriff "Muster". Nun müsste ich alles per Hand öffnen und alle Blätter manuell durchsuchen, aber leider sind es so viele xls das dies eine ünlösbare aufgabe wäre.
Also kurz und knapp, gibt es eine möglichkeit mittels VBA aus eine eigens dafür erstellten xls Datei?
Wenn dies geht, wäre es sehr nett, wenn mir da wer behilflich sein könnte.
Sollte das alles überhaupt nicht realisierbar sein, BITTE schreibt mir das auch damit ich nicht wieder eine ganze Woche warten muss.
Ich dannke jetzt schon mal allen die mir helfen.
LG Maria

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Durchsuchen von Exceldeteien
25.06.2006 11:31:08
Exceldeteien
Schau dir das mal an:
Option Explicit

Sub GrepWks()
Dim wkb As Workbook
Dim wks As Worksheet, wksAct As Worksheet, wksMy As Worksheet, wksData As Worksheet
Dim shp As Shape
Dim iShp As Integer, iCol As Integer, iRow As Integer, iRowL As Integer, iRowT As Integer, iRowD As Integer
Dim sFile As String
Application.ScreenUpdating = False
Set wksMy = ActiveSheet
Set wks = ThisWorkbook.Worksheets("Tabelle1")
Set wksData = ThisWorkbook.Worksheets("DATA")
wksData.Range("A2:IV65536").ClearContents
Range("J5:P5,J8:P8,J11:P11").ClearContents
If IsNumeric(wksMy.Range("D4").Value) Then
iCol = 4
Else
iCol = 2
End If
iRowT = 7
iRowD = 1
For Each shp In wks.Shapes
iShp = iShp + 1
If iShp > 3 Then Exit Sub
sFile = wks.Shapes(iShp).Hyperlink.Address
If InStr(sFile, "\") Then
sFile = Right(sFile, Len(sFile) - InStrRev(sFile, "\"))
End If
On Error Resume Next
Set wkb = Workbooks(sFile)
If wkb Is Nothing Then
Workbooks.Open ThisWorkbook.Path & "\" & sFile, False
Else
Workbooks(sFile).Activate
End If
On Error GoTo 0
For Each wksAct In Worksheets
If Right(wksAct.Name, 3) = " KW" Then
iRowL = wksAct.Cells(Rows.Count, iCol).End(xlUp).Row
For iRow = 1 To iRowL
If wksAct.Cells(iRow, iCol).Value = wksMy.Range("D4").Value Then
iRowT = iRowT + 1
iRowD = iRowD + 1
wksMy.Cells(iRowT, 2).Value = ActiveWorkbook.Name
wksMy.Cells(iRowT, 5).Value = wksAct.Name
wksMy.Cells(iRowT, 7).Value = wksAct.Cells(iRow, iCol).Address(False, False)
wksData.Cells(iRowD, 1).Value = wksAct.Cells(iRow, 1).Value
wksData.Cells(iRowD, 2).Value = wksAct.Cells(iRow, 2).Value
wksData.Cells(iRowD, 3).Value = wksAct.Cells(iRow, 3).Value & wksAct.Cells(iRow, 4).Value
wksData.Cells(iRowD, 4).Value = wksAct.Cells(iRow, 5).Value
wksData.Cells(iRowD, 5).Value = wksAct.Cells(iRow, 7).Value
wksData.Cells(iRowD, 6).Value = wksAct.Cells(iRow, 8).Value
wksData.Cells(iRowD, 7).Value = wksAct.Cells(iRow, 10).Value
wksData.Cells(iRowD, 8).Value = Val(wksAct.Name) & ". KW"
End If
Next iRow
End If
Next wksAct
ActiveWorkbook.Close savechanges:=False
Next shp
Application.ScreenUpdating = True
End Sub


Sub EinAusblenden()
With Worksheets("DATA")
If .Visible = xlSheetVisible Then .Visible = xlSheetVeryHidden Else .Visible = xlSheetVisible
End With
End Sub


Sub WerteEintragen()
Dim wkb As Workbook
Dim wks As Worksheet, myWks As Worksheet
Dim rng As Range, rngAct As Range
Dim iRow As Integer
Dim sKW As String
Set rng = Range("$J$5,$L$5,$N$5,$P$5,$J$8,$L$8,$N$8")
For Each rngAct In rng.Cells
If IsEmpty(rngAct) Then
If MsgBox("Eine oder mehrere Zelle des Eingabebereiches enthalten" & vbLf & "keinen Wert. Soll die Eintragung dennoch erfolgen?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
Exit For
End If
Next rngAct
If IsEmpty(Range("B8")) Then
Beep
MsgBox "Sie haben keine gültige Kalenderwoche eingetragen!"
Range("B8").Select
Exit Sub
End If
Set myWks = ActiveSheet
sKW = Val(Range("Kalenderwoche").Value)
On Error Resume Next
Set wkb = Workbooks(Range("B8").Value)
If IsEmpty(Range("B8")) Then
Beep
MsgBox "Sie müssen an der Position des Cursors einen Arbeitsmappen-Namen eintragen!"
Range("B8").Select
Exit Sub
End If
Application.ScreenUpdating = False
If wkb Is Nothing Then
If Dir(ThisWorkbook.Path & "\" & Range("B8").Value) = "" Then
Beep
MsgBox "Die Arbeitsmappe " & Range("B8").Value & " wurde nicht gefunden - " & vbLf & "bitte überprüfen!"
Exit Sub
End If
Workbooks.Open ThisWorkbook.Path & "\" & Range("B8").Value, False
Else
wkb.Activate
End If
On Error Resume Next
Set wks = Worksheets(sKW & " KW")
If wks Is Nothing Then
Beep
MsgBox "Das Arbeitsblatt " & sKW & " KW wurde nicht gefunden!"
Exit Sub
End If
On Error GoTo 0
iRow = wks.Cells(wks.Rows.Count, 5).End(xlUp).Row + 1
wks.Cells(iRow, 1).Value = myWks.Range("Datum").Value
wks.Cells(iRow, 2).Value = myWks.Range("Kom.Name").Value
If Not IsNumeric(Left(myWks.Range("Kom.Nummer").Value, 1)) Then
wks.Cells(iRow, 3).Value = Left(myWks.Range("Kom.Nummer").Value, 1)
wks.Cells(iRow, 4).Value = Right(myWks.Range("Kom.Nummer").Value, Len(myWks.Range("Kom.Nummer").Value) - 1)
Else
wks.Cells(iRow, 4).Value = myWks.Range("Kom.Nummer").Value
End If
wks.Cells(iRow, 5).Value = myWks.Range("Bruttowert").Value
wks.Cells(iRow, 7).Value = myWks.Range("E_W_Anschluss").Value
wks.Cells(iRow, 8).Value = myWks.Range("Prozente").Value
wks.Cells(iRow, 6).Value = (wks.Cells(iRow, 5).Value - 230) / 1.16
wks.Cells(iRow, 9).Value = wks.Cells(iRow, 6).Value * wks.Cells(iRow, 8).Value
wks.Cells(iRow, 11).Value = wks.Cells(iRow, 9).Value + (wks.Cells(iRow, 10).Value * 20) + wks.Cells(iRow, 7).Value
myWks.Range("Gesamtsumme").Value = wks.Cells(iRow, 11).Value
myWks.Range("E8").Value = sKW & " KW"
myWks.Range("G8").Value = wks.Cells(iRow, 4).Address(False, False)
Worksheets(1).Select
ActiveWorkbook.Close True
Application.ScreenUpdating = False
End Sub

Gruß Emi
Anzeige
AW: Durchsuchen von Exceldeteien
25.06.2006 12:57:51
Exceldeteien
Hallo Emi,
ich kenn mich da überhaupt nicht aus, leider. Habe alles in ein modul getan und schaltflächen erstellt, soweit kenn ich mich noch aus, aber das wars dann auch schon. Bei 2 schaltflächen kommt dann Debuggen und sonst passiert auch nichts, kannst du mir nochmals helfen?
Danke, LG Maria
AW: Frage noch offen o.T
25.06.2006 13:02:11
Maria
.
AW: Frage noch offen o.T
25.06.2006 13:21:46
P@ulchen
Hallo Maria,
damit der von Emilia gepostete Code funktioniert, mußt Du natürlich erst alle Anpassungen vornehmen (Blattnamen etc). Ausserdem ist da viel Krimskrams drin, der mit Deinem Problem nix zu tun hat, war aber sicher auch nur als Beispiel gedacht...
Schildere Deine Dateistruktur mal etwas genauer:
Wo soll das Wort gesucht werden:
- In allen Blättern der Zieldateien?
- In allen Spalten der Blätter?
- Vielleicht nur in einem bestimmten Blatt mit dem immer gleichen Namen?
Wie soll Deine Startdatei aussehen?
- Wo steht das Suchwort?
- Was soll passieren, wenn das Suchwort in der Zieldatei gefunden wird?
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: Erneute Erklärung
25.06.2006 13:30:43
Maria
Hallo Paul,
danke erstmals für deine hilfe. Das ganze sieht so aus:
Habe einen Ordner mit dem Namen "Daten"
In diesem Ordner sind alle dazugehörigen Excelblätter, welche mit dem Namen der Mitarbeiter abgespeichert sind (also jeder Mitarbeiter hat ein Tabellenblatt.
Dieses Tabellenblatt ist so eine Art formular wo Daten eingetragen sind.
Nun möchte ich ein Extra Tabellenblatt haben, wo dann auf klick einer schaltfläche sich ein Fenster öffnet wo ich dann einen Suchbegriff eingeben kann.
Es sollten dann alle im Ordner "Daten" befindlichen Excelblätter durchsucht werden nach meinem eingegeben Begriff.
Als Ergebnis sollte mir dann dieses aufgelistet werden, also nehmen wir mal an ich Suche nach dem Begriff "Test".
Das Wort "Test" kommt dann z.B. in 3 Tabellenblätter in dem Ordner "Daten" vor.
Als Ergebnis sollte mir dann der Name der Tabellenblätter z.B.: Maier, Krüger, Bernd aufgelistet sein.
Ich hoffe ich konnte es dieses Mal etwas verständlicher erklären und du weisst nun, was ich bräuchte und kannst mir helfen.
Danke schonmals, LG Maria
Anzeige
AW: Erneute Erklärung
25.06.2006 13:40:15
P@ulchen
Hallo Maria,
der Ordner heißt Daten, ok...
Jetzt schreibst Du, die Excelblätter tragen die Mitarbeiternamen. Meinst Du wirklich die Blätter?
Wie heißen dann die Excel-Dateien?
Bitte noch mal genauer beschreiben (Struktur: Ordner - Datei - Tabellenblatt) oder mal eine Beispieldatei hochladen.
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

AW: Erneute Erklärung
25.06.2006 13:44:53
Maria
Hallo,
da hab i wieder was angestellt, es heissen nicht die Blaätter sondern die Exceldatei ist so gespeichert, dass heistt ich habe da eine xls mit namen Maier, eine mit Krüger, eine mit Bernd usw.
Innerhalb dieser xls habe ich mehrere Blätter, dass heisst, in der xls von Maier sind mehrere Blätter, und genau diese sollen dann in alle xls durchsucht.
Ist es denn möglich, die xls durchsuchen zu lassen, ohne das man den genauen Namen der Mitarbeiter angeben muss und ebenso nicht die einzelen Blätter darinnen?
LG Maria
Anzeige
AW: Musterbeispiel
25.06.2006 16:40:24
P@ulchen
Hallo Maria,
ich habe mal eine Datei zur Auswertung erstellt.
Du müsstest sie so, wie sie ist, verwenden können. Dabei spielt es keine Rolle, ob sie im gleichen Verzeichnis liegt, wie die Zieldateien, in denen gesucht werden soll.
Du mußt nach Klick auf den Startbutton Deinen Suchbegriff eingeben und kannst danach den Verzeichnispfad der Zieldateien auswählen. Die Voreinstallung, welcher Ordner zuerst angeboten werden soll, kannst Du im Modul1, Public Sub ordner() bei sFolder=... einstellen.
Probier mal aus...
https://www.herber.de/bbs/user/34615.xls
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: Musterbeispiel
Maria
Hallo Paul,
ich danke dir von ganzem herzen, ich glaube es funzt so wie ich es mir vorgestellt habe. Sollte ich noch weitere Fragen haben werde ich mich wieder melden.
Wunderschönen Sonntag noch und sehr sehr liebe und dankende Grüsse.
Maria
AW: Musterbeispiel
25.06.2006 16:51:44
P@ulchen
Vielen Dank für die Rückmeldung und auch Dir noch einen schönen (Fußball-)Sonntag ;-))
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: @Paulchen bitte nochmals
25.06.2006 18:21:12
Maria
Hallo Paul,
hab zwar schon mal gepostet, aber der Thread is weg?
Da gibts no ein kleines Problem.
Es passt alles nur die Suchfunktion lieret immer nur den genauen wortlaut was ich suche.
Es sollte aber so sein:
Wenn ich nach Apfel suche sollte mir auch angezeigt werden wo Apfel überall vorkommt.
Also z.B.: Apfelbaum, Apfel - Kern, Apfelmus usw.
Ist auich das realisierbar?
Ich danek dir wieder schon mal jetzt.
LG Maria
AW: @Paulchen bitte nochmals
25.06.2006 18:25:22
P@ulchen
Hallo Maria (oder Bugs),
ändere im Modul1, Sub Werte_suchen() folgendes:
alt:
Set xCell = Sheets(u).Cells.Find(sFind, , , xlWhole)
neu:
Set xCell = Sheets(u).Cells.Find(sFind, , , xlPart)
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: @Paulchen bitte nochmals
25.06.2006 18:26:55
Maria
Hallo,
klingt einfach, werd ich mal rumdoktern, aber vielen dank für deine mühe.
Baba Maria
PS.: I meld mi wieder wenns net klappt

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige