Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Daten in anderer Excel Datei suchen und übertragen

Daten in anderer Excel Datei suchen und übertragen
12.11.2012 11:27:42
Mexsalem
Hallo,
ich möchte mich wieder an Euch wenden, da mir eine Lösung für folgendes Problem Lösung nicht glückt.
In meiner Tabelle wird ein Suchbegriff in eine Zelle ("B4") eingegeben. Daraufhin soll der Suchbegriff in einer anderen (geschlossenen!) Excel-Datei gesucht werden, dessen Dateiname variiert und daher in einem Datei-Dialog ausgewählt werden soll. Schön wäre, wenn man ein Verzeichnis vordefinieren könnte (z.B. C:\Temp).
Der Suchbegriff steht in der Spalte "B" der anderen Excel-Datei (es müssen also nicht alle Zellen der Tabelle durchsucht werden), er kommt jedoch mehrfach vor.
In der Zeile des gefundenen Suchbegriffs befinden sich in den Spalten C;D;K;N;P;R die Daten, die auf meine Tabelle übertragen/eingelesen werden sollen.
Die gefundenen Daten sollen ab der Position "Import" (= definierter Name für Zelle "A63") wie folgt eingefügt werden.
meine Tabelle        Quelldatei
Spalte A               Spalte N
Spalte B               Spalte D
Spalte C               Spalte K
Spalte D               Spalte R
Spalte E               Spalte P
Spalte J               Spalte C
Da wird also ein wenig durcheinander gewürfelt :-)
Viele Grüße
Mexsalem

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Daten in anderer Excel Datei suchen und übertragen
12.11.2012 14:48:29
Mexsalem
Ergänzung:
Zum Datenimport aus einer geschlossenen Arbeitsmappe hatte ich das Makro von Thomas Ramel im Forum gefunden.
Ich schaffe es nur nicht, den variablen Dateinamen mittels Datei-Dialog zu integrieren und den Bereich durch den Suchbegriff zu definieren, sowie die ganze Spaltenwürfelei zu realisieren.
Gruss
Mexsalem
Private Sub Übertragung_Click()
' Die Routine arbeitet mit der Funktion GetDataClosedWB zusammen
Dim Pfad            As String
Dim Dateiname       As String
Dim Blatt           As String
Dim Bereich         As String
Dim Ziel            As Range
Pfad = "c:\temp"
Dateiname = "Test.xls"           ' aus welcher Datei soll er holen?
Blatt = "Tabelle1"               ' von welcher Tabelle soll er holen?
Bereich = ?             ' aus welchem Bereich soll er holen?
Set Ziel = ActiveSheet.[Import]  ' Bei welcher Zelle soll er anfangen, reinzukopieren?       _
If GetDataClosedWB(Pfad, Dateiname, Blatt, Bereich, Ziel) Then
MsgBox "Daten importiert"
End If
End Sub
Public Function GetDataClosedWB(SourcePath As String, _
SourceFile As String, sourceSheet As String, _
SourceRange As String, TargetRange As Range) As Boolean
'Holt einen Bereich aus einer _geschlossenen_ Arbeitsmappe
'Nur in VBA zu verwenden; nicht aus einer Tabellenzelle heraus
'© t.ramel@mvps.org
' wird durch die HoleDaten aufgerufen
Dim strQuelle       As String
Dim Zeilen          As Long
Dim Spalten         As Byte
On Error GoTo InvalidInput
strQuelle = "'" & SourcePath & "[" & SourceFile & "]" & sourceSheet & "'!" & Range( _
SourceRange).Cells(1, 1).Address(0, 0)
Zeilen = Range(SourceRange).Rows.Count
Spalten = Range(SourceRange).Columns.Count
With TargetRange.Cells(1, 1).Resize(Zeilen, Spalten)
.Formula = "=IF(" & strQuelle & "="""",""""," & strQuelle & ")"
.Value = .Value
End With
GetDataClosedWB = True
Exit Function
InvalidInput:
MsgBox "Die Quelldatei oder der Quellbereich ist ungültig!", vbExclamation, "Get data from  _
closed Workbook"
GetDataClosedWB = False
End Function

Anzeige
Frage noch offen
16.11.2012 22:25:56
Mexsalem
Hallo,
mein Problem ist leider noch nicht gelöst. Hat jemand einen Ansatz, wie man der Lösung näherkommt ?
Viele Grüße
Mexsalem
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Daten aus einer anderen Excel-Datei suchen und übernehmen


Schritt-für-Schritt-Anleitung

  1. Vorbereitung der Excel-Datei: Stelle sicher, dass Du die Excel-Datei mit den Daten, die Du importieren möchtest, gemäß den Vorgaben strukturiert hast. Der Suchbegriff sollte in der Spalte B stehen.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Modul hinzufügen: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“ und wähle „Einfügen“ > „Modul“.

  4. Makro einfügen: Kopiere den folgenden VBA-Code in das Modul:

    Private Sub Übertragung_Click()
       Dim Pfad As String
       Dim Dateiname As String
       Dim Blatt As String
       Dim Bereich As String
       Dim Ziel As Range
    
       Pfad = "C:\Temp" ' Definiere den Pfad
       Dateiname = Application.GetOpenFilename("Excel-Dateien (*.xls; *.xlsx), *.xls; *.xlsx") ' Datei-Dialog für Dateiauswahl
    
       If Dateiname = "Falsch" Then Exit Sub ' Abbrechen, wenn keine Datei ausgewählt wurde
    
       Blatt = "Tabelle1" ' Blattname anpassen
       Bereich = "B:B" ' Hier wird die gesamte Spalte B durchsucht
    
       Set Ziel = ActiveSheet.[Import] ' Zielzelle definieren
    
       If GetDataClosedWB(Pfad, Dir(Dateiname), Blatt, Bereich, Ziel) Then
           MsgBox "Daten importiert"
       End If
    End Sub
  5. Funktion hinzufügen: Füge ebenfalls die GetDataClosedWB-Funktion ein, die die Daten aus der geschlossenen Excel-Datei holt.

  6. Makro ausführen: Schließe den VBA-Editor, gehe zurück zu Excel und führe das Makro aus, indem Du auf den Button klickst, den Du mit Übertragung_Click verknüpft hast.


Häufige Fehler und Lösungen

  • Fehler: Ungültige Quelldatei: Stelle sicher, dass der Dateiname und der Pfad korrekt sind. Überprüfe auch, ob die Datei wirklich geschlossen ist.

  • Fehler: Daten werden nicht übertragen: Überprüfe den Bereich, den Du angibst. Stelle sicher, dass der Suchbegriff tatsächlich in der angegebenen Spalte vorhanden ist.

  • Fehler: Keine Daten gefunden: Wenn keine Daten gefunden werden, könnte der Suchbegriff nicht in der Spalte B vorhanden sein. Nutze die Funktion, um sicherzustellen, dass die Daten vorhanden sind.


Alternative Methoden

Eine Alternative zur Verwendung von VBA ist die Verwendung von Power Query. Damit kannst Du Daten aus einer anderen Excel-Datei importieren, ohne ein Makro zu schreiben. Gehe zu „Daten“ > „Daten abrufen“ > „Aus Datei“ > „Aus Arbeitsmappe“. Wähle die Datei aus und importiere die benötigten Daten.


Praktische Beispiele

Angenommen, Du möchtest die Excel-Daten aus einer Datei namens „Daten.xlsx“ in der Spalte B suchen und die entsprechenden Werte in die Spalten C, D, und E Deiner Zieltabelle übertragen. Du kannst den oben genannten VBA-Code leicht anpassen, um die gewünschten Daten zu übernehmen.


Tipps für Profis

  • Nutze die Application.Match-Funktion in VBA, um effizient nach dem Suchbegriff zu suchen.
  • Implementiere Fehlerbehandlungen, um das Makro robuster zu gestalten.
  • Dokumentiere Deinen Code, damit Du später leichter Anpassungen vornehmen kannst.

FAQ: Häufige Fragen

1. Wie kann ich den Pfad zur Quelldatei dynamisch ändern?
Du kannst den Pfad in der Variablen Pfad anpassen oder einen Datei-Dialog verwenden, wie im Code gezeigt.

2. Kann ich nur bestimmte Zeilen in der Quelldatei durchsuchen?
Ja, passe den Bereich in der Bereich-Variable an, um nur die gewünschten Zeilen zu durchsuchen.

3. Funktioniert dieses Verfahren in allen Excel-Versionen?
Dieses Makro funktioniert in Excel 2010 und höher, solange die VBA-Funktion unterstützt wird.

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