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

Forumthread: Verknüpfungen auf anderes Tabellenblatt per VBA

Verknüpfungen auf anderes Tabellenblatt per VBA
04.05.2015 18:28:56
Volker
Hallo zusammen,
ich habe in einer Arbeitsmappe in einem Tabellenblatt WS1.TabA eine Verknüpfung zu Daten in einer anderen Arbeitsmappe WS2.TabB.
Die Reiter in WS2 werden für jeden Arbeitstag fortgeschrieben (z.B. 4.5., 5.5., 6.5. usw.) und für jeden Monat wird eine neue Arbeitsmappe angelegt (z.B. WS2 05.15, WS2 06.15 usw.)
Ich möchte mit einem Makro die Verknüpfung auf das Tabellenblatt ändern.
Wenn ich ein Makro aufzeichne und die Datenverknüpfung ändere erhalte ich folgenden Code, mit _ Bezug auf die Arbeitsmappe aber ohne Bezug auf das Tabellenblatt:

Sub quelle()
ActiveWorkbook.ChangeLink Name:= _
"Pfad\WS2 03.15.XLS" _
, NewName:= _
"Pfad\2015\WS2 04.15.XLS" _
, Type:=xlExcelLinks
End Sub

Wie bekomme ich da den Bezug auf das Tabellenblatt hin?
Da jeden Tag ein neuer Reiter hinzukommt, müsste ich auch eine dynamische Lösung dafür haben _ und nicht mit fixen Links arbeiten. Ich hatte mir da eine Behilfslösung überlegt, indem ich die Links in Zellen zwischenspeicher:

Sub quelle2()
' quelle2 Makro
Dim quellealt As String
Dim quelleneu As String
Dim quellealt2 As String
Dim quelleneu2 As String
quellealt = Range("U17").Value
quelleneu = Range("U18").Value
ActiveWorkbook.ChangeLink Name:=quellealt, NewName:=quelleneu, Type:=xlExcelLinks
quellealt2 = quelleneu
quelleneu2 = Application.GetOpenFilename()
ActiveWorkbook.ChangeLink Name:=quellealt2, NewName:=quelleneu2, Type:=xlExcelLinks
Range("U17").Value = quellealt2
End Sub

Ich habe auch versucht die Zellenbezüge mit "Suchen und Ersetzen" zu editieren, werde dann aber gebeten bei jeder einzelnen Linkänderung den Pfad neu anzugeben.
Hat jemand eine Lösung hierfür? Ich habe schon etliche Foreneinträge durchgewühlt und hoffe auf eure Hilfe.
Danke!

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verknüpfungen auf anderes Tabellenblatt
04.05.2015 18:42:32
Daniel
HI
du kannst die Formeln auf dem Tabellenblatt auch mit der Replace-Funktion (Ersetzen) bearbeiten:
Cells.Replace "[DateinameAlt.xls]TabellenblattAlt'!", "[DateinameNeu.xls]TabellenblattNeu'!", xlpart
Gruß Daniel

AW: Verknüpfungen auf anderes Tabellenblatt
04.05.2015 19:35:35
Volker
Hallo Daniel,
danke für deine schnelle Antwort - ich habe deinen Vorschlag sofort umgesetzt:
Sub replace()
Dim Linkalt As String
Dim Linkneu As String
Linkalt = Range("s10").Value
Linkneu = Range("s9").Value
Cells.replace Linkalt, Linkneu, xlPart
Range("s10").Value = Linkneu
End Sub
Wenn ich das Makro so ablaufen lasse, öffnet sich für jeden abgeänderten Link ein Fenster und ich muss die Zielarbeitsmappe (in deinem Beispiel [Dateiname.xls]) auswählen und bestätigen. Funktioniert so noch nicht...
Viele Grüße,
Volker

Anzeige
AW: Verknüpfungen auf anderes Tabellenblatt
04.05.2015 19:43:18
Daniel
Hi
das Fenster öffnet sich, wenn der Bezug nicht vorhanden ist.
Dh Dateiname und Tabellenblattname müssen stimmen und entsprechend der Schreibregeln für Dateinamen in Formeln richtig geschrieben sein.
(Dateinname wird in [..] gesetzt, ggf Hochkomma zu Beginn und vor dem !)
das kann ich jetzt natürlich nicht beurteilen, weil ich deine Datei und deinen Code nicht kenne.
Gruß Daniel

Anzeige
AW: Verknüpfungen auf anderes Tabellenblatt
05.05.2015 09:45:27
Volker
Hi Daniel,
das hört sich alles logisch an. Ich habe eine funktionierende Verknüpfung mit folgendem Pfad:
...\2015\[01.15 WPA.XLS]05.01.'!I4
mit der replace-Funktion ersetze ich nun lediglich den Bezug zum Tabellenblatt: "05." ersetzen mit "06.". Das Tabellenblatt "06.01." ist in der Arbeitsmappe angelegt und es sollte funktionieren - jedoch öffnet sich das Fenster zum Bestätigen des Pfades trotzdem bei jeder geänderten Verknüpfung...
Viele Grüße,
Volker

Anzeige
AW: Verknüpfungen auf anderes Tabellenblatt
05.05.2015 11:17:25
Daniel
Hi
wie sieht deine Formel aus?
wie heissen deine Dateien?
kann es sein, dass der Text "05." noch an anderer Stelle in der Formel vorkommt, wo er nicht durch "06." ersetzt werden darf?
Wenn du sicher gehen willst, nur den Blattnamen zu bearbeiten, nimmst du den vollständigen Blattnamen incl der angrenzden Zeichen und ersetzt ]05.01.'! durch ]06.01.'!
Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Verknüpfungen zwischen Excel-Tabellenblättern per VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine Excel-Verknüpfung auf ein anderes Tabellenblatt per VBA zu erstellen, kannst du folgende Schritte befolgen:

  1. Öffne die Excel-Arbeitsmappe und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Füge ein neues Modul hinzu:

    • Klicke auf „Einfügen“ > „Modul“.
  3. Füge den folgenden Code ein, um die Verknüpfung zu erstellen:

    Sub verknuepfen()
       Dim alteVerknuepfung As String
       Dim neueVerknuepfung As String
    
       alteVerknuepfung = "[DateinameAlt.xls]TabellenblattAlt!"
       neueVerknuepfung = "[DateinameNeu.xls]TabellenblattNeu!"
    
       Cells.Replace What:=alteVerknuepfung, Replacement:=neueVerknuepfung, LookAt:=xlPart
    End Sub
  4. Ändere die Platzhalter DateinameAlt.xls und DateinameNeu.xls sowie die Tabellenblattnamen nach deinen Bedürfnissen.

  5. Führe das Makro aus, um die Verknüpfungen zu aktualisieren.


Häufige Fehler und Lösungen

  • Fenster zur Bestätigung öffnet sich bei jeder Änderung:

    • Dies passiert, wenn der Dateiname oder Tabellenblattname nicht korrekt angegeben ist. Stelle sicher, dass die Schreibweise und die Struktur der Formeln stimmen.
  • Verknüpfung funktioniert nicht:

    • Überprüfe, ob die Datei, auf die du verlinken möchtest, tatsächlich existiert und der Pfad korrekt ist.
  • Die Ersetzen-Funktion aktualisiert nicht alle Links:

    • Achte darauf, dass das zu ersetzende Element nicht an anderen Stellen im Text vorkommt, die nicht verändert werden sollten.

Alternative Methoden

Eine weitere Möglichkeit, Excel-Daten aus einer anderen Tabelle zu verknüpfen, besteht darin, die Einfache Verknüpfung über Formeln zu verwenden:

  1. Gehe zu der Zelle, in der die Verknüpfung sein soll.
  2. Tippe =, gefolgt von dem Verweis auf die Zelle in einer anderen Tabelle, z. B. ='[Dateiname.xls]Tabellenblatt'!A1.
  3. Drücke Enter, und die Daten aus dem anderen Tabellenblatt werden verknüpft.

Praktische Beispiele

Angenommen, du hast eine Tabelle namens Umsatz in Monatsdaten.xls und möchtest die Gesamtsumme in Jahresdaten.xls verknüpfen:

  1. In Jahresdaten.xls:

    Sub verknuepfen()
       ' Verknüpfung zur Gesamtsumme der Umsatz-Tabelle
       Range("A1").Formula = "='[Monatsdaten.xls]Umsatz'!B10"
    End Sub
  2. Ändere den Pfad und die Zelle entsprechend deinen Bedürfnissen.


Tipps für Profis

  • Dynamische Verknüpfungen: Nutze den Application.GetOpenFilename-Befehl, um den Benutzer den Pfad zur neuen Datei auswählen zu lassen.

  • Verknüpfungen überprüfen: Verwende die ActiveWorkbook.LinkSources-Methode, um alle bestehenden Verknüpfungen zu listen und gegebenenfalls zu aktualisieren.

  • Verwendung von Variablen: Speichere häufig verwendete Dateipfade in Variablen, um den Code übersichtlicher und flexibler zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich eine Verknüpfung zwischen mehreren Tabellenblättern in einer Datei erstellen?
Du kannst die Cells.Replace-Funktion verwenden, um die Links auf dem aktuellen Blatt zu ersetzen, wie in der Schritt-für-Schritt-Anleitung beschrieben.

2. Was tun, wenn ich mehrere Verknüpfungen gleichzeitig ändern möchte?
Nutze Schleifen, um durch alle relevanten Zellen zu iterieren und die Replace-Funktion für jede Zelle anzuwenden.

3. Ist VBA die einzige Möglichkeit, um Verknüpfungen zu erstellen?
Nein, du kannst auch manuell über Formeln Verknüpfungen zwischen Excel-Tabellenblättern erstellen. VBA bietet jedoch mehr Flexibilität und Automatisierungsmöglichkeiten.

Mit diesen Anleitungen und Tipps kannst du deine Excel-Verknüpfungen effizient verwalten und anpassen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige