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

Forumthread: VBA W-Verweis auf andere Datei

VBA W-Verweis auf andere Datei
13.11.2018 15:09:51
SonOdin
Hallo zusammen,
der VBA-Anfänger braucht (mal wieder) eure Hilfe.
In einer Datei "A" habe ich in A1 die Überschrift "Namen" und in A2:A3000 div Namen.
In B1 die Überschrift "PLZ" und in B2:B3000 div PLZ, in C1 Überschrift Nachname und in C1:C3000 div Nachnamen, in D1 Telefonnummer usw...
In einer Datei "B" habe ich in A1 die Überschrift PLZ und in B1 die Überschift Nachname, sonst ist das Tabellenblatt leer.
Ich möchte jetzt per Buttondruck in der Datei "B", dass die leeren Felder unter der entsprechenden Überschift mit den passenden Daten aus Datei "A" gefüllt werden.
Mit einem normalen Formel W-Verwies ginge das theoretisch. Allerdings ist Excel bei 3000 Datein überfordert und hängt sich auf. :-( Vorallem, wenn ich mehrere W-Verwiese aktualisieren lasse. Daher meine Hoffnung in VBA.
Vielen Dank für eure Hilfe.
VG
SonOdin
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA W-Verweis auf andere Datei
13.11.2018 21:26:52
Dieter
Hallo SonOdin,
wenn ich deiner Beschreibung folge, dann kannst du das mit dem folgenden Programm machen:
Sub Datenübernehmen()
Dim letzteZeile As Long
Dim mappeA As String
Dim pfad As String
Dim wbA As Workbook  ' Arbeitsmappe A
Dim wbB As Workbook  ' Arbeitsmappe B
Dim wsA As Worksheet
Dim wsB As Worksheet
Set wbB = ThisWorkbook
Set wsB = wbB.Worksheets(1)
letzteZeile = wsB.Cells(wsB.Rows.Count, "B").End(xlUp).Row
If letzteZeile > 1 Then
wsB.Range(wsB.Rows(2), _
wsB.Rows(letzteZeile)).ClearContents
End If
pfad = wbB.Path & "\"       '
Allerdings ist mir nicht klar, wie du das mit dem WVERWEIS meinst.
Viele Grüße
Dieter
Anzeige
AW: VBA W-Verweis auf andere Datei
14.11.2018 16:08:29
SonOdin
Hallo Dieter,
vielen Dank für Deine Hilfe. Funktioniert super.
Eine kleine Frage hätte ich aber noch:
Kann man den Code dynamisch gestallten, dass er nach der passenden Überschrift aus Datei B, in diesem Fall "PLZ" und "Nachname", in Datei A sucht und die pssenden Inhalte "zieht".
Auch wenn in Datei A die Überschrift "PLZ" mal nicht in B1:B3000 steht sondern in z.B. D1:D3000, er trotzdem die richtigen findet?
Ich hofe du verstehts was ich meine :-)
Danke nochmal
VG
SonOdin
Anzeige
AW: VBA W-Verweis auf andere Datei
14.11.2018 18:07:26
Dieter
Hallo SonOdin,
jetzt verstehe ich auch deine Bemerkung mit dem WVERWEIS.
Also die ergänzte Aufgabenstellung bearbeitet das folgende Programm:
Sub Datenübernehmen()
Dim letzteSpalte As Long
Dim letzteZeile As Long
Dim mappeA As String
Dim pfad As String
Dim spalte As Long
Dim suchBegriff As String
Dim suchErgebnis As Object
Dim wbA As Workbook  ' Arbeitsmappe A
Dim wbB As Workbook  ' Arbeitsmappe B
Dim wsA As Worksheet
Dim wsB As Worksheet
Set wbB = ThisWorkbook
Set wsB = wbB.Worksheets(1)
letzteZeile = wsB.Cells(wsB.Rows.Count, "B").End(xlUp).Row
If letzteZeile > 1 Then
wsB.Range(wsB.Rows(2), _
wsB.Rows(letzteZeile)).ClearContents
End If
pfad = wbB.Path & "\"       ' "" Then
letzteZeile = wsA.Cells(wsA.Rows.Count, suchErgebnis.Column).End(xlUp).Row
If letzteZeile > 1 Then
suchErgebnis.Offset(1, 0).Resize(letzteZeile - 1).Copy _
Destination:=wsB.Cells(2, spalte)
End If
End If
Next spalte
Ende:
wbA.Close SaveChanges:=False
End Sub
In der Mappe B können in der Überschriftszeile beliebig viele Begriffe stehen. Sie werden alle in Mappe A gesucht und im Erfolgsfall wird jeweils die entsprechende Spalte übernommen.
Viele Grüße
Dieter
Anzeige
AW: VBA W-Verweis auf andere Datei
15.11.2018 16:09:04
SonOdin
Hallo Dieter,
super. Genau das was ich brauche.
Hab vielen, vielen Dank.
VG
SonOdin

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA W-Verweis auf andere Datei in Excel


Schritt-für-Schritt-Anleitung

Um in Excel per VBA einen Bezug auf eine andere Datei herzustellen und Daten zu übertragen, kannst du folgende Schritte ausführen:

  1. Öffne die Excel-Datei "B", in die die Daten übernommen werden sollen.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.
  4. Kopiere den folgenden VBA-Code in das Modul:
Sub Datenübernehmen()
    Dim letzteZeile As Long
    Dim mappeA As String
    Dim pfad As String
    Dim wbA As Workbook  ' Arbeitsmappe A
    Dim wbB As Workbook  ' Arbeitsmappe B
    Dim wsA As Worksheet
    Dim wsB As Worksheet
    Set wbB = ThisWorkbook
    Set wsB = wbB.Worksheets(1)
    letzteZeile = wsB.Cells(wsB.Rows.Count, "B").End(xlUp).Row
    If letzteZeile > 1 Then
        wsB.Range(wsB.Rows(2), wsB.Rows(letzteZeile)).ClearContents
    End If
    pfad = wbB.Path & "\"
    ' Hier füge den Code zur Datenübertragung aus mappe A hinzu
End Sub
  1. Passe den Code an, um die spezifischen Daten aus "A" zu ziehen, indem du die entsprechenden Spalten und Zeilen definierst.
  2. Speichere das Modul und schließe den VBA-Editor.
  3. Füge einen Button in das Excel-Blatt ein und verknüpfe diesen mit dem Makro „Datenübernehmen“.

Häufige Fehler und Lösungen

  • Excel hängt sich auf: Stelle sicher, dass du nicht zu viele W-Verweise gleichzeitig aktualisierst. Eine Alternative ist, die Daten per VBA zu übertragen, wie oben beschrieben.
  • Referenz auf die Arbeitsmappe: Wenn die Datei "A" nicht geöffnet ist, kann der Code nicht darauf zugreifen. Stelle sicher, dass die Datei "A" geöffnet ist oder passe den Code an, um sie zu öffnen.
  • Falsche Pfad- oder Dateinamen: Überprüfe, ob der Pfad zur Datei "A" korrekt angegeben ist.

Alternative Methoden

Wenn der VBA-W-Verweis nicht die gewünschte Leistung bietet, kannst du die Daten auch manuell übertragen oder mit Power Query arbeiten. Power Query ermöglicht es dir, Daten aus verschiedenen Quellen zu importieren und zu transformieren, ohne dass die Excel-Anwendung überlastet wird.


Praktische Beispiele

Angenommen, du hast die Daten in "A" wie folgt strukturiert:

  • A1: Namen
  • A2:A3000: Namen
  • B1: PLZ
  • B2:B3000: PLZ

In "B" möchtest du die PLZ und Nachnamen automatisch füllen. Der VBA-Code würde sicherstellen, dass die entsprechenden Daten aus "A" in die leeren Felder von "B" eingefügt werden.


Tipps für Profis

  • Verwende Option Explicit am Anfang deines Moduls, um sicherzustellen, dass alle Variablen deklariert sind. Das hilft dir, Fehler zu vermeiden.
  • Nutze With-Anweisungen, um den Code effizienter zu gestalten und die Lesbarkeit zu verbessern.
  • Teste deinen Code regelmäßig, um sicherzustellen, dass alle Verweise korrekt sind und die Daten wie gewünscht übertragen werden.

FAQ: Häufige Fragen

1. Wie kann ich den Code anpassen, um Daten dynamisch zu suchen?
Du kannst die Überschrift in "B" abfragen und dann mit einer Schleife durch die Spalten in "A" gehen, um die passenden Daten zu finden und zu kopieren.

2. Was mache ich, wenn ich mehrere W-Verweise gleichzeitig brauche?
Versuche, die W-Verweise in einer einzigen VBA-Prozedur zu konsolidieren, anstatt sie einzeln zu aktualisieren. Das verbessert die Leistung und vermeidet, dass Excel überlastet wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige