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

Forumthread: Wert in geschlossener Datei suchen

Wert in geschlossener Datei suchen
abu
Hallo Zusammen,
Habe eine Userfrom mit einer Textbox1 mit dem Beispielwert: 555. Dieser Wert soll in der geschlossen Datei Test.xls in Spalte F gesucht werden und beim ersten Treffer soll mir aus der selben Zeile der Wert aus Spalte A an Textbox2 uebergeben werden und der Wert aus Spalte B in Textbox3.
Kann man das Umsetzen, da die Datei geschlossen ist?
Wuerde mich ueber Hilfe sehr freuen.
Gruss
abu
Anzeige
AW: Wert in geschlossener Datei suchen
21.12.2009 12:49:10
Hajo_Zi
Hallo Abu,
lass es sein. Ich vermute Du mußt den gesamten Bereich in Deine Datei übernehmen und dann prüfen. Da lohnt der Aufwand nicht. Da ist öffnen einfacher.

AW: Wert in geschlossener Datei suchen
21.12.2009 13:06:35
abu
Hallo Hajo,
danke auch aber so leicht will ich es mir dann doch nicht machen.
Verstehe deine Vermutung nicht ganz, was meinst du mit: 'Ich vermute Du mußt den gesamten Bereich in Deine Datei übernehmen und dann prüfen.
Vllt. hab ich mich zu umstaendlich ausgedrueckt aber im Grunde brauch ich doch nur einen Sverweis der auch mit einer geschlossen Datei funktioniert
Gruss abu
Anzeige
AW: Wert in geschlossener Datei suchen
21.12.2009 13:08:33
Hajo_Zi
Hallo Abu,
dann trage die SVERWEIS() Formel doch per VBA in eine Zelle ein.
Gruß Hajo
AW: Wert in geschlossener Datei suchen
21.12.2009 12:52:50
Reinhard
Hallo Abu,
jetzt kannste in A suchen:
Sub tt()
Application.ScreenUpdating = False
Range("A1:A10000").Formula = "='C:\Test\[Test.xls]Tabelle1'!F1"
Application.ScreenUpdating = True
End Sub
Gruß
Reinhard
Anzeige
AW: Wert in geschlossener Datei suchen
21.12.2009 13:11:05
abu
Hallo Reinhard,
auch Dir danke, verstehe ich aber leider nicht.
Gruss
abu
AW: Wert in geschlossener Datei suchen
21.12.2009 13:06:02
Daniel
Hi
ich würde das so umsetzen:
1. wenn es mehrere Daten sind, die ausgelesen werden müssen, dann
- Datei öffnen
- Wert auslesen
- Datei schließen
das ist meistens auch schneller als ein Zugriff auf eine geschlossene Datei.
2. bei einzelnen Daten würde ich:
- eine entsprechende Formel, die den gewünschten Wert über einen Externen Zellbezug liefert, in eine freie Zelle schreiben und dieses Formelergebnis in der Userform verwenden.
Gruß, Daniel
Anzeige
AW: Wert in geschlossener Datei suchen
21.12.2009 13:10:19
Tino
Hallo,
kannst es mal so versuchen.
Dialog UserForm1
Option Explicit 
 
Private Sub CommandButton1_Click() 
Dim strPfad$, strTabelle$, sSuchbereich$, sAusgabe$ 
 
'Datei Pfad 
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\") 
 
'Dateipfad und Dateiname ' davor und Dateiname in [...] 
strPfad = "'" & strPfad & "[Test.xls]" 
 
'Tabellename am ende mit '! 
strTabelle = "Tabelle1" & "'!" 
 
'Ausgabebereich 
sAusgabe = Range("A1:B65536").Address(ReferenceStyle:=xlR1C1) 
 
'Suchbereich 
sSuchbereich = Range("F1:F65536").Address(ReferenceStyle:=xlR1C1) 
 
On Error Resume Next 
'Wert für Textbox2 
TextBox2 = ExecuteExcel4Macro( _
"INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & TextBox1 & "," & strPfad & strTabelle & sSuchbereich & ",0),1)" _
) 
If Err.Number <> 0 Then TextBox2 = "" 
Err.Clear 
 
'Wert für Textbox3 
TextBox3 = ExecuteExcel4Macro( _
"INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & TextBox1 & "," & strPfad & strTabelle & sSuchbereich & ",0),2)" _
) 
If Err.Number <> 0 Then TextBox3 = "" 
On Error GoTo 0 
 
End Sub 
 
TypNameEigenschaften
CommandButtonCommandButton1
Caption:Suchen
Height:18
Left:144
TabIndex:4
Top:18
Width:66
LabelLabel1
Caption:Eingabe
Height:12
Left:6
TabIndex:3
Top:6
Width :48
TextBoxTextBox1
Height:18
Left:6
TabIndex:0
Text:
Top:18
Width:132
TextBoxTextBox2
Height:18
Left:6
Text:
Top:66
Width:132
TextBoxTextBox3
Height:18
Left:6
TabIndex:2
Text:
Top:102
Width:132

Gruß Tino
Anzeige
AW: Wert in geschlossener Datei suchen
21.12.2009 13:39:10
abu
Hallo Tino,
danke fuer den Code. Habe deinen Code eingefuegt. Was muss ich denn alles anpassen?
-Die geschlossen Datei: Tabelle in Tabelle1! umbenennen
-'Dateipfad und Dateiname ' davor und Dateiname in [...]
strPfad = "'H:\My Documents\TEST Complaints" & strPfad & "[Test.xls]"
Muss ich noch mehr anpassen, denn bei mir passiert nichts. Laeuft durch aber es wird nichts uebergeben.
Excel4Macro, muss ich das irgendwie noch freischalten oder sowas?
Gruss abu
Anzeige
AW: Wert in geschlossener Datei suchen
21.12.2009 13:44:53
Tino
Hallo,
strPfad = "'H:\My Documents\TEST Complaints\" & "[Test.xls]"
Hier mein Beispiel dazu, irgendwo auspacken.
https://www.herber.de/bbs/user/66741.zip
Gruß Tino
AW: Wert in geschlossener Datei suchen
21.12.2009 14:03:24
abu
Tino,
super genauso wollte ich es haben. Leider funktioniert das ganze nicht bei mir. Meine Datei heisst auch Test und das Tabellenblatt heisst Tabelle1. Hast Du eine idee wieso?
Gruss abu
Anzeige
nochmal Kommentare dazu
21.12.2009 14:16:06
Tino
Hallo,
'hier gibst Du dan Pfad zu der Datei an
'Bsp.: strPfad = "H:\My Documents\TEST Complaints\"
'am ende auf \ achten
strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
'hier musst Du eigentlich nichts machen
'Dateipfad und Dateiname ' davor und Dateiname in [...]
strPfad = "'" & strPfad & "[Test.xls]"
'hier Tabellennamen anpassen
'Tabellename am ende mit '!
strTabelle = "Tabelle1" & "'!"
'eigendlich nichts anpassen
sAusgabe = Range("A1:B65536").Address(ReferenceStyle:=xlR1C1)
'eigendlich nichts anpassen
sSuchbereich = Range("F1:F65536").Address(ReferenceStyle:=xlR1C1)
Gruß Tino
Anzeige
AW: nochmal Kommentare dazu
21.12.2009 16:06:20
abu
Tino,
noch mal vielen Dank fuer deine Unterstuetzung, echt super.
Gruss
abu
suche nicht nur nach Zahlen auch Text möglich
21.12.2009 13:40:10
Tino
Hallo,
wenn Du nach Kommazahlen suchen möchtest, muss das Komma durch einen Punkt ersetzt werden.
Möchtest Du nach Text Suchen, muss dieses durch weitere Anführungsstriche erweitert werden.
Private Sub CommandButton1_Click()
Dim strPfad$, strTabelle$, sSuchbereich$, sAusgabe$
Dim strSuchWert$

If TextBox1 <> "" Then
    strSuchWert = TextBox1
    
    If IsNumeric(strSuchWert) Then
     strSuchWert = Replace(strSuchWert, ",", ".")
    Else
     strSuchWert = Chr(34) & strSuchWert & Chr(34)
    End If
    
    
    'Datei Pfad 
    strPfad = IIf(Right$(ThisWorkbook.Path, 1) = "\", ThisWorkbook.Path, ThisWorkbook.Path & "\")
    
    'Dateipfad und Dateiname ' davor und Dateiname in [...] 
    strPfad = "'" & strPfad & "[Test.xls]"
    
    'Tabellename am ende mit '! 
    strTabelle = "Tabelle1" & "'!"
    
    'Ausgabebereich 
    sAusgabe = Range("A1:B65536").Address(ReferenceStyle:=xlR1C1)
    
    'Suchbereich 
    sSuchbereich = Range("F1:F65536").Address(ReferenceStyle:=xlR1C1)
    
    On Error Resume Next
    'Wert für Textbox2 
    TextBox2 = ExecuteExcel4Macro( _
    "INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & strSuchWert & "," & strPfad & strTabelle & sSuchbereich & ",0),1)" _
    )
    If Err.Number <> 0 Then TextBox2 = ""
    Err.Clear
    
    'Wert für Textbox3 
    TextBox3 = ExecuteExcel4Macro( _
    "INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & strSuchWert & "," & strPfad & strTabelle & sSuchbereich & ",0),2)" _
    )
    If Err.Number <> 0 Then TextBox3 = ""
    On Error GoTo 0
Else
    TextBox2 = "": TextBox3 = ""
End If
End Sub
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Wert in geschlossener Datei suchen


Schritt-für-Schritt-Anleitung

Um Werte in einer geschlossenen Excel-Datei zu suchen, kannst Du die ExecuteExcel4Macro-Funktion in VBA verwenden. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den Visual Basic for Applications (VBA) Editor in Excel (Alt + F11).

  2. Erstelle eine UserForm mit mindestens drei TextBoxen (TextBox1, TextBox2, TextBox3) und einem CommandButton (CommandButton1).

  3. Füge folgenden VBA-Code in das Code-Fenster der UserForm ein:

    Option Explicit
    
    Private Sub CommandButton1_Click()
        Dim strPfad As String, strTabelle As String, sSuchbereich As String, sAusgabe As String
        Dim strSuchWert As String
    
        If TextBox1 <> "" Then
            strSuchWert = TextBox1
    
            If IsNumeric(strSuchWert) Then
                strSuchWert = Replace(strSuchWert, ",", ".")
            Else
                strSuchWert = Chr(34) & strSuchWert & Chr(34)
            End If
    
            strPfad = "'H:\My Documents\TEST Complaints\[Test.xls]"
            strTabelle = "Tabelle1'!"
            sAusgabe = Range("A1:B65536").Address(ReferenceStyle:=xlR1C1)
            sSuchbereich = Range("F1:F65536").Address(ReferenceStyle:=xlR1C1)
    
            On Error Resume Next
            TextBox2 = ExecuteExcel4Macro("INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & strSuchWert & "," & strPfad & strTabelle & sSuchbereich & ",0),1)")
            If Err.Number <> 0 Then TextBox2 = ""
            Err.Clear
    
            TextBox3 = ExecuteExcel4Macro("INDEX(" & strPfad & strTabelle & sAusgabe & ",MATCH(" & strSuchWert & "," & strPfad & strTabelle & sSuchbereich & ",0),2)")
            If Err.Number <> 0 Then TextBox3 = ""
            On Error GoTo 0
        End If
    End Sub
  4. Passe den Dateipfad und den Tabellennamen in den Variablen strPfad und strTabelle entsprechend Deiner Datei an.


Häufige Fehler und Lösungen

  • Fehler: Keine Werte werden zurückgegeben.

    • Lösung: Überprüfe den Dateipfad und stelle sicher, dass die Datei Test.xls im angegebenen Verzeichnis vorhanden ist.
  • Fehler: Der Excel4Macro funktioniert nicht.

    • Lösung: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu "Datei" > "Optionen" > "Sicherheitscenter" > "Einstellungen für das Sicherheitscenter" > "Makroeinstellungen".
  • Fehler: Fehler beim Zugriff auf die Datei.

    • Lösung: Überprüfe die Berechtigungen für den Ordner, in dem sich die Excel-Datei befindet.

Alternative Methoden

Falls Du keine VBA-Programmierung verwenden möchtest, kannst Du die geschlossene Excel-Datei auch über Power Query durchsuchen. Beachte, dass dies eine Excel-Version voraussetzt, die Power Query unterstützt (Excel 2010 und neuer).

  1. Gehe zu Daten > Daten abrufen > Aus Datei > Aus Arbeitsmappe.
  2. Wähle die geschlossene Datei aus und lade die benötigten Daten.
  3. Verwende dann die Filter- und Suchfunktionen von Power Query, um die gewünschten Informationen zu finden.

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie der Code funktioniert:

  • Angenommen, Du möchtest nach dem Wert 555 suchen, der in der geschlossenen Datei Test.xls in Spalte F steht. Der Wert aus Spalte A wird in TextBox2 und aus Spalte B in TextBox3 angezeigt.

Tipps für Profis

  • Nutze Fehlerbehandlungsroutinen in Deinem VBA-Code, um Probleme effektiv zu erkennen und zu beheben.
  • Verwende Excel-Daten aus anderer Datei suchen und übernehmen für komplexere Datenanalysen, indem Du mehrere Excel-Dateien durchsuchst und verbindest.
  • Optimiere den Suchbereich, um die Leistung zu verbessern, indem Du nur die benötigten Zellen einbeziehst.

FAQ: Häufige Fragen

1. Kann ich auch nach Text in der geschlossenen Datei suchen?
Ja, Du kannst die Suche nach Text anpassen, indem Du die Eingabewerte in der TextBox1 entsprechend formatierst.

2. Gibt es eine Möglichkeit, die Excel-Datei automatisch zu öffnen, um die Daten schneller zu suchen?
Ja, es ist oft schneller, die Datei zu öffnen, die gewünschten Werte auszulesen und sie anschließend zu schließen. Dies kann die Performance verbessern, insbesondere bei größeren Datenmengen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige