Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1768to1772
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
Inhaltsverzeichnis

Geschlossene Arbeitsmappe durchsuchen

Geschlossene Arbeitsmappe durchsuchen
15.07.2020 08:13:39
Christian
Hallo zusammen
Ist es möglich aus einer geschlossenen Arbeitsmappe Werte zu suchen und in eine Textbox zu übernehmen?
Ich möchte einen Wert aus einer Textbox in einer anderen Tabelle suchen.
Beispiel:
In der Textbox1, 2 und 3 befinden sich Werte: Datum und 2 Nummern.
Anhand dieser Werte soll die dazugehörige ID gefunden werden und in einer Textbox ausgegeben werden.
ID ist in Spalte A, Wert 1 in Spalte F und Wert 2 in G der geschlossenen Mappe.
Ist so etwas überhaupt möglich?
Freundliche Grüsse
Christian

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 10:14:46
Beverly
Hi Christian,
du kannst die andere Mappe doch im Hintergrund öffnen, die Daten heraussuchen und die Mappe wieder schließen - wenn du Application.ScreenUpdating im Code vorher auf False setzt (nicht vergessen, am Ende wieder auf True setzen!!), wird das Öffnen der Mappe nicht angezeigt.


Alternative
15.07.2020 15:20:06
Beverly
Hi Christian,
da man die Daten aus einer geschlossenen Mappe per Formel holen kann (im Beispiel werden dazu die Zellen A1:D1 benutzt), könntest du auch folgenden Code verwenden:
Private Sub CommandButton1_Click()
Dim strMappe As String              ' Pfad & Name der Quellmappe
Dim lngZeile As Long                ' Zeilenzähler für die Quellmappe
Application.ScreenUpdating = False  ' Bildschirmaktualisierung aus
strMappe = "E:\Test\geschlossene_arbeitsmappe_auslesen.xlsx" ' 0         ' Schleife so lange durchlaufen, bis leere Zelle
Range("A1:D1").ClearContents        ' A1:D4 leeren
Application.ScreenUpdating = True   ' Bildschirmaktualisierung ein
End Sub
Bedingung ist, dass in der geschlossenen Mappe in Spalte A keine Leerzellen vorkommen


Anzeige
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 10:15:41
Armin
Hallo Christian,
man kann zwar aus geschlossenen Sheets Datenüberenhmen aber nicht Durchsuchen.
Dazu muss das Sheet geöffnet werden.
Gruß Armin
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 11:04:16
Daniel
HI
VBA kann nicht auf geschlossene Mappen zugreifen.
Das können nur Excelformeln.
du könntest also eine kleine Tabelle mit den notwendigen Formeln aufbauen (SVerweis oder Index+Vergleich) und dann deine TextBoxen mit diesen Zellen verknüpfen.
Gruß Daniel
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 15:31:33
Herbert_Grom
Hallo Daniel,
das geht sehr wohl! U. a. damit:
Option Explicit
'* Dies funktioniert sowohl mit einer Einzelzelle, als auch mit einem Zellbereich!
Const strFile As String = "E:\xxx\xxx.xlsm" '* Pfad und Datei
Const strSheetQ As String = "xxx"           '* DIEse Tabelle wird ausgelesen"
Const strRange As String = "B5:B30"         '* Der Bereich wird ausgelesen
Const strSheetZ As String = "Tabelle1"      '* Die Tabelle in DIESER Datei
Sub DatenHolen()
With ThisWorkbook.Worksheets(strSheetZ)
.Range(strRange).Formula = "='" & Mid(strFile, 1, InStrRev(strFile, "\")) & "[" & _
Mid(strFile, InStrRev(strFile, "\") + 1) & "]" & strSheetQ & "'!" & strRange
'* Daten einfügen
.Range(strRange).Value = .Range(strRange).Value
End With
End Sub
Servus
Anzeige
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 15:35:21
Beverly
Hi Herbert,
Daniel hat doch geschrieben, dass man das mit Formeln machen kann - und dein Code macht auch nichts anderes als die Bezüge per Formel zu erstellen...


AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 15:42:58
Herbert_Grom
Hallo Karin,
danke für den Hinweis, das habe ich dann falsch interpretiert.
Servus
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 15:46:57
Daniel
wie Beverly schon schrieb:
ob du die Formeln jetzt von Hand ins Tabellenblatt schreibst oder das VBA machen lässt, spielt ja keine Rolle.
Hier rechnet die Formel im Excel-Tabellenblatt.
Dann gäbe es noch einen Weg ohne Tabellenblatt, bei dem man sich streiten kann, ob das VBA ist oder nicht,
man erstellt die Formel als Textstring und lässt sie dann mit ExecuteExcel4Makros oder Evaulate berechnen
Hierbei wird die Formel nicht erst in eine Zelle geschrieben, sondern direkt an den Excel-Formelinterpreter zur Berechnung übergeben, deswegen kann man geteilter Meinung sein.
Echte VBA-Methoden wie .FIND oder auch die Funktionen aus WorksheetFunction kannst du aber nur auf geöffnete Mappen anwenden.
Gruß Daniel
Anzeige
AW: Geschlossene Arbeitsmappe durchsuchen
15.07.2020 16:00:35
Beverly
Hi Daniel,
es wäre interessant zu erfahren, wie du das mittels Evaluate bzw. ExecuteExcel4Makros löst, denn alle meine Versuche mithilfe von Evaluate (auch unter Verwendung von definierten Namen) ergaben alle Laufzeitfehler. Ich habe deshalb die Bezugsformel jeweils in eine Zelle geschrieben - siehe meinen Beitrag "Alternative".


Mit Excel4Macro
16.07.2020 00:01:18
Beverly
@All,
unter Bezugnahme auf den geposteten Link funktioniert es mit folgendem Code problemlos, ohne dass man etwas in eine Zelle schreiben muss:
Private Sub CommandButton1_Click()
Dim strMappe As String              ' Pfad & Name der Quellmappe
Dim lngZeile As Long                ' Zeilenzähler für die Quellmappe
Dim blnWahr As Boolean
Dim arrDaten()
Application.ScreenUpdating = False  ' Bildschirmaktualisierung aus
strMappe = "E:\Test\[geschlossene_mappe.xlsx]Tabelle1" ' 0       ' Schleife so lange durchlaufen, bis leere Zelle
If blnWahr = True Then
' ID in TextBox übernehmen
TextBox4 = arrDaten(0)
Else
MsgBox "Keine Übereinstimmung gefunden"
End If
Application.ScreenUpdating = True   ' Bildschirmaktualisierung ein
End Sub
Private Function GetValue(datei, zelle)
' angepasster Code aus dem Link https://www.excel-inside.de/beispiele_vba/vba-workbooks-datei/947-daten-aus-geschlossener-arbeitsmappe-auslesen
'** Daten aus geschlossener Arbeitsmappe auslesen
'*** Dimensionierung der Variablen
Dim arg As String
'** Das Argument erstellen
arg = "'" & datei & "'!" & Range(zelle).Range("A1").Address(, , xlR1C1)
'** Auslesen über Excel4Macro
GetValue = ExecuteExcel4Macro(arg)
End Function

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige