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

Verknüfung automatisch ändern (variabler Pfad)

Forumthread: Verknüfung automatisch ändern (variabler Pfad)

Verknüfung automatisch ändern (variabler Pfad)
Gordon
Moin moin,
ich hab da mal wieder ein Problem, wofür jemand ja vielleicht eine Lösung weiß. Und zwar habe ich eine Datei von der aus ich mir punktuell aus anderen Dateien Daten per Makro ziehe bzw. rüber kopiere.
In diesen Dateien kommen Verknüpfungen vor, die mir leider meine Hauptdatei (Name Test) unbrauchbar machen. Ich muss erst immer die Verknüpfungen auf diese datei umlegen, damit es funktioniert.
Per Rekorder habe ich mir mal den Code für die Änderung einer Verknüpfung anzeigen lassen und soweit geändert:

ChDir "ActiveWorkbook.path"
ActiveWorkbook.ChangeLink name:= _
"Variabler Pfad", _
NewName:="Test.xls", Type:=xlExcelLinks
So, wo nun 'Variabler Pfad' fett steht ist mein problem. Dieser Pfad kann immer verschieden sein! :-(
Gibt es eine Möglichkeit, dass IMMER diese Verknüpfung (egal wie der variable Pfad lautet) gegen 'Test.xls' ausgetauscht wird?
Gruß
Gordon
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Verknüfung automatisch ändern (variabler Pfad)
13.08.2010 17:26:40
Gordon
Oder anders gefragt:
Gibt es eine Möglichkeit, wie ich die aus einer geöffneten Datei die bestehenden Verknüpfungen auslesen kann?
Gruß
Gordon
AW: Verknüfung automatisch ändern (variabler Pfad)
14.08.2010 17:47:05
fcs
Hallo Gordon,
hier mal zwei Beispiele zur Linkanpassung. 1. mit Auswahldialog, 2. direkt in 2. Datei
Gruß
Franz
Sub LinkAnpassen()
Dim sLinkAktiv As String, sLinkDatei As String, vLinks
Dim sMsgText As String, vAuswahl
Dim wbAktiv As Workbook, wbDatei2 As Workbook
Set wbAktiv = ActiveWorkbook
'Linkliste in der aktiven Datei für Inputbox erstellen
sLinkAktiv = Link_Liste(wb:=wbAktiv, bIndex:=False)
'2. Datei öffnen
vAuswahl = Application.Dialogs(xlDialogOpen).Show
If vAuswahl = True Then
Set wbDatei2 = ActiveWorkbook
'Linkliste in der geöffneter Datei für Inputbox erstellen
sLinkDatei = Link_Liste(wb:=wbDatei2)
'Prompt für Inputbox erstellen
sMsgText = wbAktiv.Name & vbNewLine & sLinkAktiv & vbNewLine & vbNewLine
sMsgText = sMsgText & wbDatei2.Name & vbNewLine & sLinkDatei & vbNewLine & vbNewLine
sMsgText = sMsgText & "Welchen Link (Nr.) in geöffneter Datei anpassen?"
'zu ändernden Link auswählen"
vAuswahl = InputBox(sMsgText, "Link - Anpassen", Default:=1)
If vAuswahl  "" And IsNumeric(vAuswahl) Then
vLinks = wbDatei2.LinkSources(Type:=xlExcelLinks)
wbDatei2.ChangeLink Name:=vLinks(CLng(vAuswahl)), NewName:=wbAktiv.FullName
Application.Calculate
End If
wbDatei2.Close savechanges:=True
End If
End Sub
Sub LinkAnpassen_direkt() 'wenn 2. Datei fest und immer nur ein Link vorhanden
Dim vLinks, sPath As String, sFile As String
Dim wbAktiv As Workbook, wbDatei2 As Workbook
On Error GoTo Fehler
Set wbAktiv = ActiveWorkbook
sPath = "C:\Users\Public\Test\01\Test01"
sFile = "TestData_102.xls"
'2. Datei öffnen
Application.ScreenUpdating = False
Set wbDatei2 = Workbooks.Open(Filename:=sPath & Application.PathSeparator & sFile)
'Excel-Linkliste in 2. Datei
vLinks = wbDatei2.LinkSources(Type:=xlExcelLinks)
If IsArray(vLinks) Then
wbDatei2.ChangeLink Name:=vLinks(1), NewName:=wbAktiv.FullName
Application.Calculate
Else
MsgBox "in Datei """ & wbDatei2.Name & """ sind keine Links vorhanden"
End If
wbDatei2.Close savechanges:=True
Fehler:
With Err
Select Case .Number
Case 0 'Alles ok
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbNewLine & .Description
End Select
End With
Application.ScreenUpdating = True
End Sub
Public Function Link_Liste(wb As Workbook, Optional bIndex As Boolean = True) As String
'Liste der Links zu Exceldateien als Liste Text-Liste erstellen
Dim vLink As Variant, iIndex&
For Each vLink In wb.LinkSources(Type:=xlExcelLinks)
iIndex = iIndex + 1
Link_Liste = IIf(bIndex, iIndex & "   ", "") & vLink & vbNewLine
Next
End Function

Anzeige
;
Anzeige

Infobox / Tutorial

Verknüpfungen in Excel automatisch anpassen


Schritt-für-Schritt-Anleitung

Um Verknüpfungen in Excel automatisch zu ändern, kannst du folgenden VBA-Code verwenden. Dieser Code ermöglicht es dir, die Verknüpfungen in einer Excel-Datei flexibel zu handhaben, unabhängig vom Speicherort der Quelldatei.

Sub VerknuepfungAendern()
    Dim vLinks As Variant
    Dim wbAktiv As Workbook
    Set wbAktiv = ActiveWorkbook

    ' Alle Links in der aktiven Arbeitsmappe abrufen
    vLinks = wbAktiv.LinkSources(Type:=xlExcelLinks)

    If Not IsEmpty(vLinks) Then
        Dim i As Integer
        For i = LBound(vLinks) To UBound(vLinks)
            wbAktiv.ChangeLink Name:=vLinks(i), NewName:="Test.xls", Type:=xlExcelLinks
        Next i
        MsgBox "Verknüpfungen erfolgreich geändert!"
    Else
        MsgBox "Keine Verknüpfungen gefunden."
    End If
End Sub

Dieser Code durchläuft alle Verknüpfungen in der aktiven Arbeitsmappe und ersetzt sie durch "Test.xls". Achte darauf, dass du die Datei, die du verknüpfen möchtest, im gleichen Verzeichnis wie die Arbeitsmappe gespeichert hast.


Häufige Fehler und Lösungen

Fehler: "Keine Verknüpfungen gefunden."
Lösung: Stelle sicher, dass tatsächlich Verknüpfungen in der Arbeitsmappe vorhanden sind. Überprüfe dies unter Daten > Verknüpfungen bearbeiten.

Fehler: "Der Dateiname ist ungültig."
Lösung: Überprüfe den Pfad und sicherstellen, dass die Datei "Test.xls" existiert und im richtigen Verzeichnis liegt.


Alternative Methoden

Eine alternative Methode zur Anpassung von Verknüpfungen besteht darin, die Links manuell über die Excel-Oberfläche zu ändern. Dies kannst du tun, indem du:

  1. Auf Daten klickst.
  2. Verknüpfungen bearbeiten auswählst.
  3. Die gewünschten Links manuell bearbeitest.

Diese Methode eignet sich besonders, wenn du nur wenige Verknüpfungen anpassen musst.


Praktische Beispiele

Hier sind zwei praktische Beispiele zur Anpassung von Verknüpfungen:

  1. Mit Auswahldialog: Verwende den folgenden Code, um dem Benutzer die Auswahl einer Datei zu ermöglichen:

    Sub LinkAnpassenMitDialog()
       Dim wbAktiv As Workbook, wbZiel As Workbook
       Set wbAktiv = ActiveWorkbook
       Application.Dialogs(xlDialogOpen).Show
       Set wbZiel = ActiveWorkbook
       wbAktiv.ChangeLink Name:=wbZiel.LinkSources(1), NewName:="Test.xls"
       wbZiel.Close SaveChanges:=True
       MsgBox "Link angepasst!"
    End Sub
  2. Direkt ohne Dialog: Wenn du bereits weißt, wo die Datei gespeichert ist:

    Sub LinkAnpassenDirekt()
       Dim wbAktiv As Workbook
       Set wbAktiv = ActiveWorkbook
       wbAktiv.ChangeLink Name:="C:\Path\To\Your\File.xls", NewName:="Test.xls"
       MsgBox "Link erfolgreich geändert!"
    End Sub

Tipps für Profis

  • Verwende Fehlerbehandlung: Füge On Error Resume Next hinzu, um sicherzustellen, dass dein Code nicht bei einem Fehler stoppt.
  • Automatisiere den Prozess: Wenn du regelmäßig Verknüpfungen ändern musst, kannst du diesen Code in ein Add-In einfügen, um ihn schnell verfügbar zu machen.
  • Teste deine Makros: Führe deine Makros immer in einer Kopie deiner Datei aus, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich alle Verknüpfungen in einer Datei auf einmal ändern?
Du kannst den oben genannten VBA-Code verwenden, um alle Verknüpfungen in der aktiven Arbeitsmappe gleichzeitig zu ändern.

2. Was mache ich, wenn ich die Quelldatei nicht finden kann?
Überprüfe den Pfad in der Linkquelle und stelle sicher, dass die Quelldatei im angegebenen Verzeichnis vorhanden ist. Wenn nötig, aktualisiere den Pfad manuell.

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