Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: in geschlossener Datei suchen und Ergebnis anzeige

in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 09:21:04
thomas
Hallo zusammen,
ich hab eine bitte...kann mir jemand den unten stehenden Code so erweitern, dass er in einem geschlossenem Dokument alle Tabellenblätter durchsucht.
Sub suffix()
n = ActiveCell.SpecialCells(xlLastCell).row
Suchbegriff = InputBox("Bitte Motorcode eingeben:")
For i = 2 To n
If Range("B" & i) = Suchbegriff Then
MsgBox " Suffix " & vbTab & Range("H" & i)
Exit Sub
End If
Next
MsgBox "Es wurde kein Eintrag zu """ & Suchbegriff & """ gefunden."
End Sub

Danke
Gruß Thomas
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 09:31:25
Daniel
Hi
das geht nicht.
VBA kann nur mit geöffneten Dateien arbeiten.
Auf geschlossene Dateien können nur Formeln in Excelzellen zugreifen, und auch das ist für bestimmte Funktionen, welche eine hohe Rechenzeit erwarten lassen, geblockt.
Gruß Daniel
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 09:44:07
thomas
Hallo Daniel,
ok, das muss nicht umbedingt geschlossenen sein. Kannst du das dann bitte auf ein geöffnetes Dokument umändern?
Gruß Thomas
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:09:05
Daniel
hi
im Prinzip so:

Dim wb As Workbook
Dim wsh As Worksheet
Dim Zelle As Range
Dim Suchbegriff As String
Set wb = ActiveWorkbook
Suchbegriff = InputBox("Bitte Motorcode eingeben:")
For Each wsh In wb.Worksheets
Set Zelle = wsh.Columns(2).Find(what:=Suchbegriff, lookat:=whole, LookIn:=xlValues)
If Not Zelle Is Nothing Then Exit For
Next
If Zelle Is Nothing Then
MsgBox Suchbegriff & " nicht gefunden"
Else
MsgBox " Suffix " & Zelle.Offset(0, 6).Value
End If
durchsucht wird die aktive Datei.
wenn du den Dateinamen kennst, kannst du mit
set wb = Workbooks("Dateiname.xlsb")

dann auch diese durchsuchen, unabhängig von der gerade aktiven Datei.
Gruß Daniel
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:20:20
thomas
Hallo Daniel,
ist die Suchfunktion noch so, dass Excel in Spalte B sucht und das Ergebnis aus Spalte H zurück gibt?
Bei mir kommt die Fehlermeldung: Index ausserhalb des güligen Bereiches? Was bedeutet das?
Danke dir schonmal für die schnelle Hilfe.
Gruß Thomas
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:25:21
thomas
er markiert mir die Zeile mit " Set Zelle = wsh.Columns(2).Find(what:=Suchbegriff, lookat:=whole, Lookin:=x1Values) "
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:33:04
Daniel
Hi
müsste so lauten
lookat:=xlwhole, Lookin:=xlValues
beachte das Präfix ist XL (steht für Excel) und nicht X1
Gruß Daniel
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:45:57
thomas
Hallo Daniel,
hab deine letzte Nachricht jetzt erst gesehen.
Passt, funktioniert einwandfrei.
Vielen Dank und eine schöne Woche noch.
Gruß Thomas
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:30:40
Daniel
Hi
ja, ist noch so, Ergebnis wird aus Spalte H gelesen.
Gesucht wird in Spalte B(2), das Ergebnis wird dann aus der Zelle um 6 Spalten versetzt nach rechts gelesen (das macht das .Offset(0, 6) das sollte dann die Spalte H sein.
Wenn du eine Fehlermeldung bekommst, sollest du auch angeben, in welcher Zeile sie auftritt und auch deine Codezeile dazu zeigen.
in meinem Code dürfte dieser Fehler nur dann auftreten, wenn du das hier verwendest:
set wb = Workbooks("Dateiname.xlsb")
und dabei den Dateinamen falsch geschrieben hast.
Dass du hier noch den richtigen Namen einsetzen musst und nicht einfach meinen Code kopieren kannst, sollte eigentlich klar sein.
Ansonsten ist mir noch ein Fehler in meinem Code aufgefallen:
ersezte im .find das lookat:=whole durch lookat:=xlwhole
Gruß Daniel
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:43:06
thomas
Hallo Daniel,
Das ich den Dateinamen änderen muss ist klar. :)
Zum Verständnis...die Endung beim Dateinamen ist doch xlsm, oder nicht? weil bei xlsb kommt ebenso eine Fehlermeldung.
Ansonten kommt die Fehlermeldung (Laufzeitfehler 9 / Index ausserhalb des gültigen Bereiches) nach wie vor bei der Zeile :
Set Zelle = wsh.Columns(2).Find(what:=Suchbegriff, lookat:=xlWhole, LookIn:=x1Values)
Gruß Thomas
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 10:50:36
Daniel
HI
ob xlsm oder xlsb hängt davon ab, was du ausgewählt hast.
xlsm ist ein offenes standardisiertes Dateiformat, welches auch von Programmen, die nicht aus dem Hause Microsoft sind, gelesen werden kann.
xlsb ist Microsoftspezifisches binärformat, welches nochmal weniger Speicherplatz benötigt und auch schneller geöffnet wird.
Daher nehme ich eigentlich immer xlsb im normalen gebrauch.
Gruß Daniel
Anzeige
AW: in geschlossener Datei suchen und Ergebnis anzeige
26.10.2016 11:40:51
UweD
Hallo
so ginge es auch..
Sub suffix()
    Dim Pfad As String, Suchb As String, Erg As String, Ausgabe As String
    Pfad = "C:\Temp\[Mappe1.xlsx]Tabelle1"
            
    Suchb = InputBox("Bitte Motorcode eingeben:")
    Erg = ExecuteExcel4Macro("IFERROR(VLOOKUP(""" & Suchb & """,'" & Pfad & "'!C2:C8,7,0),""#"")")
    Ausgabe = IIf(Erg = "#", "Kein Eintrag zu '" & Suchb & "' gefunden.", Suchb & ":" & vbTab & Erg)
    MsgBox Ausgabe
End Sub
LG UweD
Anzeige
AW:nur das mit dem "alle Tabellenblätter"
26.10.2016 11:45:34
Daniel
wird so nur schwer realisierbar sein.
Du müsstest die Blattnamen kennen und dann jedes Blatt einzeln abfragen.
Gruß Daniel
AW: AW:nur das mit dem "alle Tabellenblätter"
26.10.2016 12:28:29
UweD
das hatte ich nicht beachtet

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

In geschlossenen Excel-Dateien nach Inhalten suchen


Schritt-für-Schritt-Anleitung

Um in einer Excel-Datei nach Inhalten zu suchen, ohne die Datei zu öffnen, kannst Du VBA verwenden. Hier ist ein einfacher Ansatz, um in einer geöffneten Datei zu suchen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsm)" > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:
Sub suffix()
    Dim wb As Workbook
    Dim wsh As Worksheet
    Dim Zelle As Range
    Dim Suchbegriff As String
    Set wb = ActiveWorkbook
    Suchbegriff = InputBox("Bitte Motorcode eingeben:")

    For Each wsh In wb.Worksheets
        Set Zelle = wsh.Columns(2).Find(what:=Suchbegriff, lookat:=xlWhole, LookIn:=xlValues)
        If Not Zelle Is Nothing Then Exit For
    Next

    If Zelle Is Nothing Then
        MsgBox Suchbegriff & " nicht gefunden"
    Else
        MsgBox "Suffix " & Zelle.Offset(0, 6).Value
    End If
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus, um in der aktiven Excel-Datei zu suchen.

Häufige Fehler und Lösungen

  • Fehler: Laufzeitfehler 9 / Index außerhalb des gültigen Bereichs
    Dieser Fehler tritt auf, wenn der angegebene Arbeitsblattname nicht existiert. Stelle sicher, dass der Arbeitsblattname korrekt ist.

  • Fehler: Suchbegriff nicht gefunden
    Wenn der Suchbegriff nicht gefunden wird, überprüfe, ob Du in der richtigen Spalte suchst. Der Code sucht standardmäßig in Spalte B.

  • Typo im Code
    Achte darauf, dass alle Variablen und Parameter korrekt geschrieben sind, z.B. lookat:=xlWhole nicht lookat:=x1Whole.


Alternative Methoden

Falls Du eine geschlossene Excel-Datei durchsuchen möchtest, kannst Du die folgende Methode verwenden:

Sub SucheInGeschlossenerDatei()
    Dim Pfad As String
    Dim Suchb As String
    Dim Erg As String
    Dim Ausgabe As String
    Pfad = "C:\Temp\[Mappe1.xlsx]Tabelle1"

    Suchb = InputBox("Bitte Motorcode eingeben:")
    Erg = ExecuteExcel4Macro("IFERROR(VLOOKUP(""" & Suchb & """,'" & Pfad & "'!C2:C8,7,0),""#"" )")
    Ausgabe = IIf(Erg = "#", "Kein Eintrag zu '" & Suchb & "' gefunden.", Suchb & ": " & vbTab & Erg)
    MsgBox Ausgabe
End Sub

Diese Methode verwendet die Funktion ExecuteExcel4Macro, um in einer geschlossenen Datei zu suchen.


Praktische Beispiele

Hier sind einige Beispiele, wie Du in einer Excel-Datei suchen kannst:

  1. Suche nach einem Motorcode:

    • Führe das Makro suffix aus und gib den Motorcode ein, den Du suchen möchtest. Das Ergebnis wird aus Spalte H zurückgegeben.
  2. Suche in einer geschlossenen Datei:

    • Verwende das Makro SucheInGeschlossenerDatei, um Daten aus Mappe1.xlsx zu suchen, ohne die Datei zu öffnen.

Tipps für Profis

  • Verwende Fehlerbehandlung: Es ist ratsam, On Error Resume Next und On Error GoTo 0 zu verwenden, um Fehler während der Ausführung zu handhaben.

  • Optimierung der Suche: Wenn Du häufig nach Daten suchst, erwäge, die Suchparameter zu optimieren, um die Leistung zu steigern.

  • Dokumentation: Kommentiere Deinen Code, um die Wartung zu erleichtern und anderen Benutzern zu helfen, die Logik zu verstehen.


FAQ: Häufige Fragen

1. Wie kann ich in einer geschlossenen Excel-Datei nach einem bestimmten Inhalt suchen?
Mit der Funktion ExecuteExcel4Macro kannst Du auch in geschlossenen Dateien suchen, indem Du den genauen Pfad und die Zellenangaben angibst.

2. Was ist der Unterschied zwischen .xlsm und .xlsb?
.xlsm ist ein standardisiertes Excel-Format, das Makros unterstützt, während .xlsb ein binäres Format ist, das weniger Speicherplatz benötigt und schneller geöffnet wird.

3. Kann ich den Code für andere Suchkriterien anpassen?
Ja, Du kannst den Suchbereich im Code anpassen, indem Du die Spaltenangabe änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige