Anzeige
Archiv - Navigation
1696to1700
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

Verknüpfung ändern

Verknüpfung ändern
26.06.2019 23:40:27
Benedikt
Guten Abend zusammen
Trotz der grossen Hitze wäre ich dankbar für Hilfe
Ich sollte beim öffnen einer Datei prüfen ob bereits die neue Verknüpfung vorhanden ist oder ob der Bezug noch auf eine alte Datei geht
Wenn Ja soll der Code abbrechen, wenn nein soll der Pfad von alt auf neu geändert werden
ActiveWorkbook.ChangeLink Name:="C:\Test\alt.xlsm", NewName _
:="C:\Test\neu.xlsm", Type:=xlExcelLinks
Alte Verknüpfung ="C:\Test\alt.xlsm"
Neue Verknüpfung ="C:\Test\neu.xlsm"
Wer kann mir mit der Prüfung helfen
Vielen Dank

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verknüpfung ändern
27.06.2019 10:15:04
fcs
Hallo Benedikt,
entsprechendes Makro kann wie folgt aussehen.
LG
Franz
'Makro unter "DieseArbeitsmappe"
Private Sub Workbook_Open()
Dim Alte_Verknuepfung As String, Neue_Verknuepfung As String
Dim varLinks, varLink, bolNeu As Boolean
Alte_Verknuepfung = "C:\Test\alt.xlsm"
Neue_Verknuepfung = "C:\Test\neu.xlsm"
'prüfen ob Datei für neue Verküpfung vorhanden ist
If Dir(Neue_Verknuepfung)  "" Then
varLinks = Me.LinkSources(xlExcelLinks)
bolNeu = False
'prüfen, ob der Link schon auf die neue Datei geändert wurde
For Each varLink In varLinks
If LCase(varLink) = LCase(Neue_Verknuepfung) Then
bolNeu = True
Exit For
End If
Next
If bolNeu = False Then
'Link ändern
Me.ChangeLink Name:=Alte_Verknuepfung, NewName:=Neue_Verknuepfung, Type:=xlExcelLinks
End If
End If
End Sub

Anzeige
AW: Verknüpfung ändern
27.06.2019 11:00:12
Benedikt
Vielen Dank Franz, kann leider erst heute Abend Testen
Verknüpfung ändern läuft nicht durch
27.06.2019 18:36:56
Benedikt
Guten Abend Franz
Noch einmal vielen Dank für deine Arbeit
Eigentlich muss es nicht ein Workbook_open in dieseArbeitsmappe sein, da die Datei per Macro mit Workbooks open filename geöffnet wurde.
wenn der code in diese Arbeitsmappe eingebunden ist hängt er sich bei
Me.ChangeLink Name:=Alte_Verknuepfung, NewName:=Neue_Verknuepfung, Type:=xlExcelLinks auf
Wenn ich das als normalen Code abspiele ist Schluss bei :
varLinks = Me.LinkSources(xlExcelLinks)
Fehler beim Kompilieren:
Unzulässige Verwendung des Schlüsselworts Me
Vielen Dank für weitere Hilfe
Anzeige
AW: Verknüpfung ändern läuft nicht durch
28.06.2019 09:46:15
fcs
Hallo Benedikt,
Me ist eine Systemvariable in Excel-VBA. Sie steht immer für das Objekt dem das jeweilige Code-Modul zugeordnet ist (Also Arbeitsmappe, Tabellenblatt, Userform etc.).
So wie ich ihn geschrieben hatte gehört der Code in das Modul "DieseArbeitsmappe" der Datei mit der Verknüpfung.
Wenn du den Code in einem anderen Code-Modul speichern willst, dann muss "Me" durch ein entsprechendes Arbeismappen-Objekt erstzt werden.
Wenn du das Makro in der Mappe mit den Verknüpfungen speicherst, dann kannst du "Me" durch "ThisWorkbook" erstzen.
Wenn du es in dem Makro integrieren willst, das die Datei öffnet, dann muss du "Me" durch "Application.Workbooks("Dateiname.xlsm")"
LG
Franz
Private Sub prcUpdateLink()
Dim Alte_Verknuepfung As String, Neue_Verknuepfung As String
Dim varLinks, varLink, bolNeu As Boolean
Dim wkbLink As Workbook
Alte_Verknuepfung = "C:\Test\alt.xlsm"
Neue_Verknuepfung = "C:\Test\neu.xlsm"
Alte_Verknuepfung = "D:\Test\alt.xlsm"
Neue_Verknuepfung = "D:\Test\neu.xlsm"
'  Set wkbLink = ThisWorkbook
Set wkbLink = Application.Workbooks("Link_Datei.xlsm") 'Name anpassen!!!
'prüfen ob Datei für neue Verküpfung vorhanden ist
If Dir(Neue_Verknuepfung)  "" Then
varLinks = wkbLink.LinkSources(xlExcelLinks)
bolNeu = False
'prüfen, ob der Link schon auf die neue Datei geändert wurde
For Each varLink In varLinks
If LCase(varLink) = LCase(Neue_Verknuepfung) Then
bolNeu = True
Exit For
End If
Next
If bolNeu = False Then
'Link ändern
wkbLink.ChangeLink Name:=Alte_Verknuepfung, NewName:=Neue_Verknuepfung, Type:= _
xlExcelLinks
End If
End If
End Sub

Anzeige
Vielen Dank Franz
28.06.2019 10:58:27
Benedikt
Vielen Dank Franz
Ich hoffe ich bekomme das gebacken..
Ich möchte das Macro als eigenständigen Code aus meinem Macro mit Application run aufrufen.
So ich hoffe ich bekomme das hin und bedanke mich für deine Arbeit
AW: Vielen Dank Franz
28.06.2019 21:50:27
Benedikt
Guten Abend Franz
Noch einmal Danke für die beiden Code und die detailierte Erklärung. Ich erachte das nicht als selbsverständlich
Beide Varianten laufen perfekt
Jetzt aber das Grosse Problem:
"Application.Workbooks("Dateiname.xlsm")" der Dateiname ist zum Zeitpunkt nicht bekannt
Geöffnet wird die "unbekannte" anhand Zelleintrag
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & ActiveCell.Value & ".xlsm"
Jetzt kommt dein Code
Call Verknüpfung
Alles perfekt solange der Dateiname fest steht
Der einzige Anhaltspunkt für den Dateinamen steht in der aktiven Zelle der Datei
"O:\Test\Dateien\FAKTURA.xlsm" dort ist die Offertnummer welche den Dateinamen bildet.(Datei ist geöffnet)
Mein Versuch "O:\Test\Dateien\FAKTURA.xlsm" & ActiveCell.Value & ".xlsm" ist aber nicht wirklich geglückt.
Wäre schön wenn Du noch einmal eingreifen könntest
Anzeige
AW: Vielen Dank Franz
29.06.2019 07:11:47
Hajo_Zi
ActiveCell
da die Datei aktiv. Nur in der aktiven Datei kann eine Zelle aktiv sein.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Wie finde ich den Namen der geöffneten Datei
29.06.2019 07:57:40
Benedikt
Hallo Hajo
Danke aber so ist mir nicht geholfen
Ich sollte den Namen der soeben geöffneten Datei haben
AW: Wie finde ich den Namen der geöffneten Datei
29.06.2019 10:50:03
Hajo_Zi
der steht hinter dem Befehl Open.
Gruß Hajo
AW: Vielen Dank Franz
29.06.2019 11:58:07
fcs
Hallo Benedikt,
du kannst den Dateinamen in einer Variablen speichern, bevor du die Datei öffnest,
Nach dem Öffnest kannst du den Dateinamen als Parameter an mein Makro übergeben.
Dazu sind nochmals einige Anpassungen nötig.
LG
Franz
Sub Test()
'Geöffnet wird die "unbekannte" anhand Zelleintrag
Dim sDateiName as string
'Dateiname ohne Pfad in Variable merken
sDateiName =ActiveCell.Value & ".xlsm"
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & sDateiName
'Jetzt kommt dein Code
Call Verknüpfung(strFileName:=strDateiname)
End Sub
Sub Verknüpfung(ByVal strFileName as String)
Dim Alte_Verknuepfung As String, Neue_Verknuepfung As String
Dim varLinks, varLink, bolNeu As Boolean
Dim wkbLink As Workbook
Alte_Verknuepfung = "C:\Test\alt.xlsm"
Neue_Verknuepfung = "C:\Test\neu.xlsm"
Set wkbLink = Application.Workbooks(strFileName) 'Name anpassen!!!
'prüfen ob Datei für neue Verküpfung vorhanden ist
If Dir(Neue_Verknuepfung)  "" Then
varLinks = wkbLink.LinkSources(xlExcelLinks)
bolNeu = False
'prüfen, ob der Link schon auf die neue Datei geändert wurde
For Each varLink In varLinks
If LCase(varLink) = LCase(Neue_Verknuepfung) Then
bolNeu = True
Exit For
End If
Next
If bolNeu = False Then
'Link ändern
wkbLink.ChangeLink Name:=Alte_Verknuepfung, NewName:=Neue_Verknuepfung, _
Type:=xlExcelLinks
End If
End If
End Sub

Anzeige
Set wkbLink = Application.Workbooks(strFileName) '
29.06.2019 14:08:59
Benedikt
Hallo Franz
Das Dankeschön reicht schon gar nicht mehr: es ist Weltklasse
darf ich dich noch einmal bemühen
sDateiName =ActiveCell.Value & ".xlsm"
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & sDateiName
'Jetzt kommt dein Code
Call Verknüpfung(strFileName:=strDateiname)
Alles Perfekt aber der Debugger meldet sich hier
Set wkbLink = Application.Workbooks(strFileName) '
AW: Set wkbLink = Application.Workbooks(strFileName) '
30.06.2019 12:02:04
fcs
Hallo Benedikt,
was steht denn in der aktiven Zelle drin aus der der Dateiname eingelesen wird?
Sind da auch noch weitere Unterverzeichnisse enthalten?
Wenn ja dann:
'Dateiname ohne Pfad in Variable merken
sDateiName =ActiveCell.Value & ".xlsm"
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & sDateiName

ändern in
'Dateiname ohne Pfad in Variable merken
sDateiName =Mid(ActiveCell.Value & ".xlsm", Instrev(ActiveCell.Value & ".xlsm", "\") + 1)
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & ActiveCell.Value & ".xlsm"

LG
Franz
Anzeige
AW: Set wkbLink = Application.Workbooks(strFileName) '
30.06.2019 15:28:45
Benedikt
Hallo Franz
Phu...........das ist ein Ding
Da kein Unterverzeichnis vorhanden
sDateiName =Mid(ActiveCell.Value & ".xlsm", Instrev(ActiveCell.Value & ".xlsm", "\") + 1)
bleibt bei Instrev hängen, Fehler beim Kompilieren - Sub oder Function nicht definiert.
was steht denn in der aktiven Zelle drin aus der der Dateiname eingelesen wird?
Jede Offerte wird unter der Angebotsnummer gespeichert. Sechsstellige Zahl (119362), Zelle ist als Standart formatiert.
Sind da auch noch weitere Unterverzeichnisse enthalten? Nein
sDateiName =ActiveCell.Value & ".xlsm"
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & sDateiName
Funktioniert einwandfrei, Datei wird gefunden und geöffnet
Mit festem Pfad funktioniert das ganze Macro 100%
Set wkbLink = Application.Workbooks("119362.xlsm")
Vielen Dank wenn Du noch einmal darüberschaust
Anzeige
AW: Set wkbLink = Application.Workbooks(strFileName) '
30.06.2019 18:17:47
fcs
Hallo Benedikt,
ich hatte jetzt deien Dateiverzeichnisse zum Testen nicht nachgebaut.
So waren mit Tippfehler bei den Variablennamen nicht aufgefallen.
Bei der Version, wenn in aktiver Zelle ein Dateipfad mit enthalten, war ein Tippfehler bei der Funktion:
Falsch Instrev
Korrekt InstrRev
LG
Franz
So sollte es jetzt funktionieren:
Sub Test()
'Geöffnet wird die "unbekannte" anhand Zelleintrag
Dim sDateiName As String
'Dateiname ohne Pfad in Variable merken
sDateiName = ActiveCell.Value & ".xlsm"
Workbooks.Open Filename:="O:\Test\Archiv\Offerten\" & sDateiName
'Jetzt kommt dein Code
Call Verknüpfung(strFileName:=sDateiName)   ' Korrektur Variable!!
End Sub
Sub Verknüpfung(ByVal strFileName As String)
Dim Alte_Verknuepfung As String, Neue_Verknuepfung As String
Dim varLinks, varLink, bolNeu As Boolean
Dim wkbLink As Workbook
Alte_Verknuepfung = "C:\Test\alt.xlsm"
Neue_Verknuepfung = "C:\Test\neu.xlsm"
Set wkbLink = Application.Workbooks(strFileName) 'Name anpassen!!!
'prüfen ob Datei für neue Verküpfung vorhanden ist
If Dir(Neue_Verknuepfung)  "" Then
varLinks = wkbLink.LinkSources(xlExcelLinks)
bolNeu = False
'prüfen, ob der Link schon auf die neue Datei geändert wurde
For Each varLink In varLinks
If LCase(varLink) = LCase(Neue_Verknuepfung) Then
bolNeu = True
Exit For
End If
Next
If bolNeu = False Then
'Link ändern
wkbLink.ChangeLink Name:=Alte_Verknuepfung, NewName:=Neue_Verknuepfung, _
Type:=xlExcelLinks
End If
End If
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige