Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1580to1584
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üpfungen mit VBA aktualisieren --> Reihenfolg

Verknüpfungen mit VBA aktualisieren --> Reihenfolg
18.09.2017 11:00:55
ZD14
Hallo liebe Community :)
ich stehe vor einem Problem und weiß nicht mehr weiter! Es kann auch gut sein, dass mich mein logisches Denkvermögen etwas im Stich lässt, da ich zu viel über das Problem nachdenke.
Folgendes:
Ich habe ein Excel-Sheet in dem Daten von bis zu 8 anderen Excel-Dateien eingelesen werden sollen. Die Tabelle sieht wie folgt aus:
Pfad Daten X Daten Y ....
-------------------------------------------------------------
1.Quellpfad Daten X1 Daten Y1 ....
2.Quellpfad Daten X2 Daten Y2 ....
3.Quellpfad Daten X3 Daten Y3 ....
4.Quellpfad Daten X4 Daten Y4 ....
Damit nicht alle acht Dateien geöffnet werden müssen (es handelt sich um große Dateien!) habe ich anstatt mit Formeln (INDIREKT etc) mit Verbindungen gearbeitet.
Dazu gibt es 8 komplett leere Dummy-Dateien (nur das Tabellenblatt wurde richtig benannt). Die Verbindungen zu denen sind hergestellt und funktionieren. Sollen nun Daten importiert werden, soll der User den Pfad zur betreffenden Datei einfach beim Xten Quellpfad (je nachdem wohin es gehört) einfügen. Danach sollen sich die Verbindungen aktualisieren.
Dh.: Wird der erste Quellpfad eingefügt, soll er die Verbindung zu Dummy1 ersetzen, der zweite Quellpfad ersetzt Dummy2, etc...
Dazu verwende ich ActiveWorkbook.ChangeLink Name:=OldSource, Newname:=NewSource und eine For-Schleife.
Beim ersten Durchlauf funktioniert das prima! Allerdings sind danach die Verbindungen komplett durcheinander!
z.B.: ist die erste Verbindung nicht der erste Quellpfad, sondern der dritte. der zweite Quellpfad ist die siebente Verbindung, etc.
Hier meine Frage: Kann mir irgendwer eine Logik erklären, wie sich das verschiebt? Hinweis: Es muss immer eine variable Anzahl von Quellpfaden angegeben / aktualisiert werden können.
Alternativ wäre mir auch geholfen, wenn es eine Möglichkeit gäbe, Verbindungen zu sortieren bzw. deren Position abzufragen.
Ich hoffe ich konnte mich klar und deutlich ausdrücken!
Vielen Dank im Voraus
ZD14

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
GELÖST
18.09.2017 16:14:48
ZD14
Hallo :)
ich muss gestehen, ich bin ein klein wenig stolz auf mich! ;)
Habe mir jetzt mit einer anderen Funktion geholfen! und zwar ersetze ich den String in der Formal einfach!
Hier mein Code:

Dim cell As Range
Dim int_Amount As Integer
Dim int_i As Integer
Dim int_Start As Integer
Dim str_datnew As String
Dim str_datold As String
int_Amount = ActiveWorkbook.Sheets("GPMS").Range("B13").Value
For int_i = 1 To int_Amount
str_datnew = ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 2).Value & "[" &  _
ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 3).Value & "]"
str_datold = ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 14).Value & "[" &  _
ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 15).Value & "]"
If str_datnew = str_datold Then
Else
For Each cell In ActiveWorkbook.Sheets("GPMS").Range(Cells(2 + int_i, 4), Cells(2 +  _
int_i, 8))
If cell.HasFormula = True Then
cell.Formula = Application.WorksheetFunction.Substitute(cell.Formula,  _
str_datold, str_datnew)
ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 2).Copy Destination:= _
ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 14)
ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 3).Copy Destination:= _
ActiveWorkbook.Sheets("GPMS").Cells(2 + int_i, 15)
End If
Next
End If
Next int_i
Hinweise:
- In Zelle B13 steht die Anzahl der angegebenen Dateien.
- In Spalte B wird der Pfad zur neuen Quelle eingetragen.
- In Spalte C der Dateiname.
- In D3:H10 stehen die Formeln.
- In Spalte N steht der vorherige Pfad.
- In Spale O der vorherige Dateiname.
Vielleicht braucht jemand mal diesen Code :)
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige