Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1764to1768
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
VBA Verbindung ändern
14.06.2020 00:44:41
and2handles
Hallo Leute,
ich möchte Verbindungen automatisch in VBA ändern. Hierzu konnte ich im Forum einen schon passenden Beitrag finden mit jenem Code:
Sub Ändern()
Dim PfadALT As String, PfadNEU As String
PfadALT = Sheets("Tabelle1").Range("F2").Text
PfadNEU = Sheets("Tabelle1").Range("F1").Text
ActiveWorkbook.ChangeLink PfadALT, PfadNEU, Type:=xlExcelLinks
End Sub
Soweit ich das verstanden habe, muss in der Zelle F1-F2 der Pfad wo sich die Dateien befinden abgebildet werden.
In meinem Fall ist dies:
[F1]: C:\Users\and2h\Desktop\VErbindung\[11.xlsm]
[F2]: C:\Users\and2h\Desktop\VErbindung\[10.xlsm]
Im Optimalfall würde er jetzt die alte Verbindung 10 durch 11 ersetzen. Stattdessen bekomme ich einen Laufzeitfehler 1004. Hat jemand Tipps was ich falsch mache und wie man dies beheben kann?

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Verbindung ändern
14.06.2020 02:13:31
ralf_b
in deinem beispiel ist der pfad innerhalb einer datei.
du hast aber ausserhalb den pfad. wenn du den um ein arbeitsblatt und eine zelle erweiterst sollte es gehen , sofern deine dateien auch dort liegen
AW: VBA Verbindung ändern
14.06.2020 09:35:18
and2handles
Morgen Ralf,
ich hab mir jetzt sicherlich 10 mal deine Antwort durchgelesen aber ich verstehe leider immer noch nicht so ganz worauf du hinaus möchtest.
Ich soll die Pfadangabe F1 und F2 auf eine andere Arbeitsmappe in der Datei schreiben und diese z.b. auf die Zellen F1:G1 und F2:G2 erweitern?
AW: VBA Verbindung ändern
14.06.2020 09:58:33
and2handles
Falls das noch zur Verständlichkeit beiträgt, ich möchte das Klicken auf den Reiter Daten, Verknüpfungen bearbeiten, Quelle ändern automatisieren.
Anzeige
Sorry war spät, kann da mal wer anders ran owT
14.06.2020 12:49:37
ralf_b
..
AW: Sorry war spät, kann da mal wer anders ran owT
14.06.2020 13:02:09
and2handles
Ich habe dabei einfach das Problem, dass all die Lösungen im Internet zu nichts führen. Des Weiteren funktioniert die Verbindungsänderung einwandfrei wenn ich es händisch mache aber Excel stürzt ab sobald ich es als Makro aufnehme während ich es händisch mache um dadurch besser verstehen zu können wie dies funktioniert.
AW: Sorry war spät, kann da mal wer anders ran owT
14.06.2020 14:17:02
ralf_b
gehts evtl auch anders als mit changelinks
kommt ja drauf an was genau du vorhast. das mit den f:g hab ich nciht soo kapiert was in den link soll und was nicht.
Sub hyperlinkmod()
' hyperlinkmod Makro
' verändert links in zellen
Dim x As Hyperlink
Dim isect As Object
For Each x In ActiveSheet.Hyperlinks
Set isect = Intersect(Range("F1:G2"), x.Range)
If Not isect Is Nothing Then
x.Address = ActiveSheet.Range("B7")   'neuer Pfad
' x.SubAddress =      'verweis auf tabelle und zelle
End If
Next
End Sub

Anzeige
AW: Sorry war spät, kann da mal wer anders ran owT
15.06.2020 08:12:20
and2handles
Guten Morgen Ralf,
sorry für die späte Antwort aber brauchte einmal ein wenig Auszeit nachdem ich mich zu lange damit beschäftige aber keine Lösung finden konnte.
Ich habe auf mehreren Arbeitsmappen in einer Datei Pfade die auf z.B eine andere Datei Datei1.xlsm verweisen. Per manuelles Klicken könnte ich jetzt unter "Daten" "Verknüpfungen ändern" diese Pfade zu Datei2.xlsm ändern. Das würde ich gerne automatisieren, dass die Verweise in den Zellen dynamisch sind.
Ich dachte erst, dass man dies mit dem ChangeLink befehl machen könnte aber dabei gibt es die Fehlermeldung 1004, wenn ich es mit der Indirekt funktion mache habe ich nichts gewonnen da ich hierfür ja die Datei öffnen muss aus denen ich die Daten ziehe.
Um deine Frage mit den F1 - G2 zu beantworten. Hier wäre zum beispiel der AlterPfad und der NeuerPfad und ich dachte man kann VBA sagen: Changelink AlterPfad mit NeuerPfad.
Anzeige
AW: Sorry war spät, kann da mal wer anders ran owT
15.06.2020 18:18:32
ralf_b
vielleicht so, sofern deine verbindungen auch hyperlinks sind
Sub hyperlinkmod()
' hyperlinkmod Makro
' verändert links in zellen
Dim x As Hyperlink
Dim isect As Object
For Each x In ActiveSheet.Hyperlinks
If x.Address = Alterpfad Then
x.Address =  NeuerPfad   'neuer Pfad
' x.SubAddress =      'verweis auf tabelle und zelle
End If
Next
End Sub

AW: Sorry war spät, kann da mal wer anders ran owT
16.06.2020 07:54:29
and2handles
Leider sind es keine Hyperlinks, ich hatte jetzt nen Workaround mit Datei öffnen gefunden. Bin damit nicht ganz zufrieden aber habe das Gefühl, dass dies häufiger vorkommt als einem lieb ist.
Danke erst einmal für deine Tipps. Die haben mich auf jeden Fall zum Nachdenken angeregt und als Inspiration das Problem zu lösen :)
Anzeige
AW: VBA Verbindung ändern
15.06.2020 09:42:38
and2handles
Hallo Toni,
danke für den Tipp. Leider bekomme ich hierbei auch einen Fehler.
Habe das ganze jetzt mit nem Workaround gemacht welcher folgenden Code hat:
Sub Open_ExistingWorkbook()
'öffnet Workbook
Pfad = Sheets("Tabelle1").Range("D1").Text
Workbooks.Open Pfad
'Kopiert Daten heraus
Windows("Text.xlsx").Activate
Selection.Copy
Windows("Makrotest.xlsm").Activate
Range("A1").Select
ActiveSheet.Paste
Windows("Text.xlsx").Activate
Range("B1:B12").Select
Application.CutCopyMode = False
Selection.Copy
Windows("Makrotest.xlsm").Activate
Range("B1").Select
ActiveSheet.Paste
'schließt Workbook
Workbooks Pfad.Close SaveChanges:=False
End Sub
Hierbei verstehe ich nicht ganz wie die Syntax genau funktioniert.
Workbooks.Open Pfad funktioniert einwandfrei aber für
Workbooks Pfad.Close SaveChanges:=False funktioniert dies nicht. Hatte statt ("dateiname.xlsx") dies mit Pfad ersetzt aber alle Syntaxvariationen sind gescheitert.
Anzeige
AW: VBA Verbindung ändern
15.06.2020 09:57:47
and2handles
Hab es :D
Workbooks(Mid(Pfad, InStrRev(Pfad, "\") + 1)).Close
aber ganz schön kompliziert im Vergleich zum öffnen.
AW: VBA Verbindung ändern
15.06.2020 18:41:28
Toni
Hi,
hätte erwartet, dass die mid() noch eine String-Länge benötigt, aber wenn es so klappt ...
Schön, dass Du Deine eigene Lösung gefunden hast, so bleibt am meisten haften ;)
lG
Toni
AW: VBA Verbindung ändern
16.06.2020 07:52:03
and2handles
Ich habe es auch nur durch Zufall gefunden. Habe keinen Plan was mid und pfad macht aber so lange es funktioniert.

294 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige