Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
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
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sverweis mit Verknüpfung in VBA dynamisch halten

Sverweis mit Verknüpfung in VBA dynamisch halten
20.03.2008 23:40:00
wossi
Hallo Forum,
ich benötige einen kreativen Ansatz. Nachdem ich schon super unterstützung hier bekommen habe, ist mir noch etwas aufgefallen, wo der Schuh (Formel) drückt.
Per VBA Code wird eine Formel (sverweis), in eine Zelle geschrieben. In der Formel befindet sich jedoch eine Verknüpfung auf eine andere Datei.
Wenn sich die Quelldatei jedoch im Pfad ändert, schlägt das nicht auf den VBA Code (ausser ich ändere im Code manuell den Pfad der Formel), in dem die Formel fest hinterlegt ist, durch. Gibt es eine Möglichkeit, dass, wenn sich der Pfad der Verknüpften Datei ändert, auch gleich die Formel im VBA Code ändert?
Danke,
Gruß
wossi

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis mit Verknüpfung in VBA dynamisch halten
20.03.2008 23:55:47
Jens
Hi,
"...Wenn sich die Quelldatei jedoch im Pfad ändert,..."
Wodurch ändert sich die?
mfg Jens

AW: Sverweis mit Verknüpfung in VBA dynamisch halt
21.03.2008 09:00:00
wossi
Moin,
z.B. dadurch, dass sie jemand verschiebt, oder über BEARBEITEN-VERKNÜPFUNGEN eine neue Quelldatei setzt. Oder sie einfach nur umbenannt wird.
Habe mal versucht, über eine Hilfszelle zu gehen. Habe die Formel in eine Zelle geschrieben, so dass Excel erkennt, dass es eine Verknüpfung zu der Datei gibt, und wollte mich dann im VBA Code auf diese Zelle beziehen. Aber es wurde dann nur =A1 eingetragen. Und für die Zellen die in den Spalten daeben liegen (Jan.-Dez.) würde er dann ja =B1 bis =L1 eintragen. Aber ich möchte nicht so viele Hilfszellen generieren.
Gruß,
wossi

Anzeige
AW: Verknüpfung in VBA dynamisch
21.03.2008 11:54:52
Erich
Hallo Wossi (fiese Eltern?),
das halte ich für einfach unmöglich.
Nehmen wir an, dass sich die Verknüpfung auf eine Datei c:\temp\abc.xls bezieht.
Jemand verschiebt (z. B. im Explorer) diese Datei und benennt sie um in C:\Eigene Dateien\xyz.xls.
Wie sollten Excel oder VBA ermitteln können, worauf sich die Verknüpfung jetzt beziehen soll?
Wie könnte die richtige Quelldatei gefunden werden?
Es könnte ja auch sein, dass die alte Quelldatei nicht verschoben oder umbenannt,
sondern einfach gelöscht wurde. Excel/VBA können das nicht "wissen".
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Sverweis mit Verknüpfung in VBA dynamisch halt
21.03.2008 11:56:00
René
Hallo Wossi,
du könntest in der Quelledatei ein Makro verwenden, welches bei Speichern oder schließen ausgeführt wird. Dieses Makro könnte dann in der anderen Datei den SVERWEIS entsprechend anpassen.
Gruß
René

Frage etwas verdeutlicht
21.03.2008 12:50:17
wossi
Hallo.
Erich hat natürlich recht, ich habe mich nicht richtig ausgedrückt.
Falls die Quelldatei verschoben, gelöscht, umbenannt, etc. wird, wie soll Excel das wissen, richtig. Der manuelle Aufwand, unter "Bearbeiten, Verknüpfungen,.." Excel den neuen Pfad mitzuteilen, soll bleiben!
Hier muss nichts automatisiert werden.
In der Datei wird per VBA eine Formel in eine Zelle geschrieben (welche ich vorher mit dem Recorder aufgezeichnet habe, wegen der transformierung in die VBA Sprache). Das passiert pro Monat einmal. Wenn sich jetzt im Laufe des Jahres der Pfad ändert, und ich die Änderung über "Bearbeiten, Verknüpfungen.." ändere, dann klappt das nur bis zum nächsten Monat, denn dann läuft das Makro wieder und fügt die (orginale Formel im VBA Code) für den neuen Monat und alle alten ein.
Ich würde mir eine Hilfszelle einrichten, in der ich die Formel eintrage, so dass die Verknüpfung von Excel erkannt wird und unter "Verknüpfungen" zur Auswahl steht. In einer Zelle daneben müsste der Formeltext angezeigt werden, auf den ich mich in der VBA Formel beziehe.
Frage, nur wie lasse ich mir den Formeltext anzeigen um auch mit ihm als Formel zu arbeiten?
'=sverweis(... würde es tun, nur stört jetzt das Hochkomma. Man könnte vielleicht die Zelle als Text formmatieren?
Fakt ist, der Pfad muss sich irgentwie in dem VBA Code aktualisieren.
"=VLOOKUP(Prämissen!R23C1,PFAD EXTERNE DATEI!C1:C13,Prämissen!R[2]C[1],0)"
Wossi

Anzeige
AW: Frage etwas verdeutlicht
21.03.2008 13:14:15
Daniel
Hi
wenn deine Arbeitsweise so ist, daß du im neuen Monat erst die Verknüpfung anpasst und dann das Makro laufen lässt, dann könntest du auch mit diesem Makro die aktuelle Verknüpfung ermitteln und diesen Pfad dann im Makro verwenden:

Sub DeinMakro()
Dim Verknüpfungen
Dim Pfad As String
'--- aktuelle Vernüpfungen ermitteln
Verknüpfungen = ThisWorkbook.LinkSources
'--- Pfadbezeichnung anpassen
Pfad = Left(Verknüpfungen(1), InStrRev(Verknüpfungen(1), "\"))
Pfad = Pfad & "["
Pfad = Pfad & Right(Verknüpfungen(1), Len(Verknüpfungen(1)) - InStrRev(Verknüpfungen(1), "\"))
Pfad = Pfad & "]"
'--- Formel einfügen
Range("A2") = "=VLOOKUP(Prämissen!R23C1,'" & Pfad & "Mappe1'!C1:C13,Prämissen!R[2]C[1],0)"
End Sub


ansonsten könntest du noch den Pfad in einer freien Zelle als Text hinterlegen, dann müsstest du ihn dort von Hand ändern, bevor das Makro läuft Im Makro holst du dann den Pfad aus dieser Zelle


Range("A2") = "=VLOOKUP(Prämissen!R23C1,'" & Sheets("xxx").cells(1,1).value & "Mappe1'!C1:C13,Prämissen!R[2]C[1],0)"


Gruß, Daniel
ps das Mako ist jetzt dafür geschrieben, daß du nur eine Verknüpfung hast.
solltest du mehrere haben, müsste man natürlich pfüfen, welches die richtige ist.

Anzeige
AW: Frage etwas verdeutlicht
21.03.2008 13:16:00
Tino
Hallo,
meinst du es so.

Dim Formel As String
'Formel korrigieren
Formel = InputBox("Formel", "Prüfe Formel", "=SVERWEIS(C1;Vorlage!A2:B26;2;1)")
'Formel in erste Zelle eintragen
Range("d8").FormulaLocal = Formel
'um wieder die R1C1 Formel zu bekommen
'damit die Zellbezüge beim eintragen in anderen Zellen mitgehen
Formel = Range("D8").FormulaR1C1
Zelle.FormulaR1C1 = Formel


Gruß
Tino

AW: Frage etwas verdeutlicht
21.03.2008 13:36:00
Tino
Hallo,
so ist es wahrscheinlich besser, es wird die aktuelle Formel angezeigt.

Dim Formel As String
'Formel korrigieren, aktuelle Formel wird angezeigt
'FormulaLocal = damit die Formel verständlicher ist
Formel = InputBox("Formel", "Prüfe Formel", Range("d8").FormulaLocal)
'Formel in erste Zelle eintragen
Range("d8").FormulaLocal = Formel
'um wieder die R1C1 Formel zu bekommen
'damit die Zellbezüge beim eintragen in anderen Zellen mitgehen
Formel = Range("D8").FormulaR1C1
'Formel in Zellen Übertragen
Zelle.FormulaR1C1 = Formel


Gruß
Tino

Anzeige
AW: Frage etwas verdeutlicht
21.03.2008 13:21:12
Erich
Hallo Wossi,
wenn du Datei- und Blattname in einer Zelle hinterlegst,
kann dein Makro damit die Formel bauen:

Sub aaa()
Dim strQuell As String
'In xyz!B2 müssen Mappen- und Blattname so stehen:    [c:\temp\Eine Mappe.xls]Das Blatt
strQuell = Sheets("xyz").Range("B2")
Cells(1, 1).FormulaR1C1 = _
"=VLOOKUP(Prämissen!R23C1,'" & strQuell & "'!C1:C13,Prämissen!R[2]C[1],0)"
End Sub

Ich finde den Blattnamen wichtig genug,
dass er in der Zelle und damit auch der Formel vorkommen sollte...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
Frohe Ostern!!
23.03.2008 20:04:00
wossi
Hallo,
danke für die vielen Vorschläge. Werde mich dransetzen und mal durchprobieren, sobald die ganzen Oster Pflichtbesuche vorüber sind.
Gruß,
Wossi

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige