Seite 1 von 1

Variable Dateiverknüpfungen

BeitragVerfasst: 12. Nov 2020, 12:01
von MattiROW
Hallo Community,

ich bräuchte mal einen Denkanstoß zum Thema Dateiverknüpfungen. Ich habe mehrere Excel Dateien untereinander und mit Word verknüpft.
In Excel werden Tabellen, Diagramme und Textbausteine erzeugt, welche in Word dargestellt werden. Das erzeugte
Word Dokument wird dann händisch ergänzt und ausgedruckt.

Alle verknüpften Dateien liegen im selben Ordner. Diesen Ordner möchte ich für jeden Kunden individuell anlegen (Kopieren).

Sobald ich den Speicherort des Ordners ändere (z.B. bei einem neuen Kunden) funktionieren logischerweise die Dateiverknüpfungen
nicht mehr und müssen händisch im Word/Exceldokument jedes mal angepasst werden.

Gibt es eine elegantere Möglichkeit das Problem zu lösen? Alle Dateien haben immer den gleichen Namen und liegen immer zusammen
in einem Ordner. Ich wäre sehr dankbar für für Ideen oder auch konkrete Lösungsansätze.
(Office365)

Hier mein Ansatz:

Sub Document_Open()

Dim newLink, PFAD As String

PFAD = ThisDocument.Path ' aktuelles Verzeichnis ermitteln
newLink = PFAD & "\Device Check.xlsx"
MsgBox newLink

' Hier habe ich trotz langer Recherche keine Möglichkeit gefunden die Quelldatei
' gegen den neuen Pfad (newlink) auszutauschen.

End Sub



Vielen lieben Dank schon im voraus

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 12. Nov 2020, 19:26
von theoS
Das sollte mit Suchen/Ersetzen gehen. Lass dir mal die Feldfunktionen anzeigen, da ist der Pfad dann nicht nur sichtbar sondern auch zu ändern.
Du kannst aber auch einfach den Dialog verwenden, den es dafür gibt

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 12. Nov 2020, 22:10
von MarkMH_K
Hi,

es gibt auch noch die Hyperlink-Basis.
https://support.microsoft.com/de-de/hel ... -word-docu

M.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 13. Nov 2020, 07:45
von MattiROW
Vielen lieben Dank für die schnellen Lösungsvorschläge.
Leider hilft mir dies nicht so richtig weiter.

Ich muss ca. 500 Ordner anlegen, die jeweils die Excel Datei (Hier werden die Daten erzeugt)
und die Word Datei enthalten (Hier werden die Daten/Diagramme/Listen etc. druckfertig aufbereitet).

Daher suche ich eine universelle Lösung (auch für andere Projekte).
Beim Öffnen des Dokumentes soll daher automatisiert nachgeschaut werden, in welchem Ordner das Dokument gespeichert ist.
In diesem Ordner liegt auch die Excel Datei.

Dann soll die Quelldatei des Dokumentes automatisch dahingehend geändert werden.
Ich habe nun schon viele manuelle Wege ausprobiert und festgestellt, dass es ziemlich umständlich ist die Verknüpfungen zu Excel manuell zu aktualisieren.

Prinzipiell suche ich konkret eine Möglichkeit mittels VBA den Speicherort der Quelldatei anzupassen.

Nochmals vielen Dank und ich hoffe, dass es einen VBA-Befehl gibt, der dies ermöglicht.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 13. Nov 2020, 11:43
von MarkMH_K
Hi,
ungeprüft: Gibt man als Hyperlink-Basis einen Punkt ein, beziehen sich die Verknüpfungen auf den aktuellen Ordner. Diesen kann man aus ActiveDocument.FullName bzw.~.Path extrahieren.

M.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 13. Nov 2020, 12:52
von knobbi38
Hallo,

vielleicht hilft dir dieser Beitrag etwas weiter:
http://www.office-loesung.de/ftopic508151_0_0_asc.php

Ulrich

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 13. Nov 2020, 21:38
von theoS
Also wenn du das so haben willst, dann sollte in jedem Dok ein Autostartmakro mit drin sein, der das abgleicht.
Prinzipiell sollte das so gehen:
Code: Alles auswählen
Sub LinkAktualisieren()
Dim strNeuerPfad, lnFLDs As Long
strNeuerPfad = ThisDocument.Path
'oder
lnFLDs = ActiveDocument.Fields.Count
If lnFLDs > 0 Then
For i = 1 To lnFLDs
Set fld = ActiveDocument.Fields(i)
 If Left(fld.OLEFormat.ClassType, 11) = "Excel.Sheet" Then

  fld.LinkFormat.SourceFullName = strNeuerPfad & "\" & fld.LinkFormat.SourceName

 End If
Next i
End If
End Sub


Prinzipiell sollte das auch mit for-each funktionieren, aber das Ding hat bei meiner Datei dann eine Endlosschleife durchlaufen, drum zähle ich das jetzt. Hat auch den Vorteil, dass, wenn kein Feld vorhanden ist in einer Datei, das nicht angefasst wird.
Wenn die Datei nicht an dem richtigen Pfad vorhanden ist, dann gibts Fehler und der Pfad wird auch nicht angepasst.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 14. Nov 2020, 09:16
von MattiROW
Ein großes DANKE an alle.
Ich werde heute Abend versuchen alles umzusetzen und melde mich wieder.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 14. Nov 2020, 10:59
von Fen
@theoS

geht der Macro von 21:38 nicht auch einmal in der Normal.dot? Mit "dim withevents App as application" sollte man auf alle neuen und neu-geöffenten Datei zureifen können.

mfg

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 14. Nov 2020, 11:54
von theoS
Keine Ahnung, müsste man ausprobieren. Aber da ja die Datei u.u. auch in einem eigenen Thread geöffnet werden wird, denke ich eher nicht. Müsste man ausprobieren.
Wobei einem die with-event-Sachen das Leben nicht leicht machen

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 14. Nov 2020, 12:34
von Fen
Zur ersten Frage:

Änderung der links in Excel

Hier ein Beispiel-Code:

Code: Alles auswählen
Sub M_snb()
    sn = ThisWorkbook.LinkSources(1)
   
    For j = 1 To UBound(sn)
       ThisWorkbook.ChangeLink Dir(sn(j)), Replace(sn(j), Dir(sn(j)), "Book2a.xlsb")
    Next
End Sub

--------------------------------------

ThisWorkbook.ChangeLink Name:= "Pfad\AlterName.xlsx", NewName:= "Pfad\NeuerName.xlsx", Type:=xlExcelLinks


Das Projekt ist recht komplex, vielleicht hilft es zuerst Teile davon zu lösen.

mfg

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 14. Nov 2020, 14:41
von Fen
Das schöne an den Foren ist, dass man ohne jede Kenntnis der Details Vorschläge machen kann:

- alle Daten in eine xlsx
- wegen der händischen Eingabe: für jeden Kunden eine docx im selben Ordner
- eine docm für alle Makros

Das sollte übersichtlicher und leichter zu warten sein.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 14. Nov 2020, 15:46
von theoS
Nope, Fen, immer funktioniert das auch nicht.
Die Datei ist Word und nur ein paar Teile davon kommen von Excel.
Die Ausgangslage ist wohl so, dass die Excelquelle jeweils in den gleichen Ordner sein soll wie die Worddatei.
Ob das Sinn macht ist mir gleich, der OP wird seinen Grund haben.
Für das Problem hätte ich die Datei halt gleich ins Dok eingebettet, was aber nicht für jeden selbstverständlich zu bearbeiten ist. Wenn man was für andere Leute bereitstellt muss man ja immer daran denken, dass man den DAU auch immer dabei hat genauso wie die, die keinen Bock haben ihre Arbeitsgewohnheiten zu ändern. Also, für jeden seine eigene Datei.
Usw.
Die Frage, wo du das Makro letztlich einbaust ist auch immer dahingehend zu beantworten, welche User gehen damit um.
Lege ich ein *.dotm an, lege sie in den Standardvorlagenordner, brauche ich im Dok kein Makro. Verschiebe ich das Ding auf einen anderen Rechner, sind die Makros nicht mehr aktiv.
Dreh das wie du willst.

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 15. Nov 2020, 18:16
von MattiROW
Hallo theoS,

genau das ist meine Herausforderung. Die Excel Datei wird von anderen gepflegt, als von den Usern der Word-Datei.
Alle haben nur die Aufgabe entweder die Excel oder die Worddatei des entsprechenden Kunden zu öffnen, zu bearbeiten
und zu speichern. Hier sind viele damit schlicht überfordert, die Dateiverknüpfungen manuell zu aktualisieren.
Um der Aussage vorzubeugen "Funktioniert nicht" und ich jedes Mal nacharbeiten muss, möchte ich diesen Weg einrichten.

Vielen Dank für den Code :)

Noch ist es mir nicht gelungen, ihn zum Laufen zu bekommen. Ich vermute, dass sich bei den ganzen laienhaften Tests von
mir die verknüpften Elemente aus Excel streiken.
Ich werde noch einmal mit einem leeren Word Dokument starten und alles Schritt für Schritt einrichten und testen.
Ich würde mich sehr freuen, wenn ich bei Problemen trotzdem nochmal nachfragen könnte.
Vielen Dank auch an alle anderen.
Bis dahin

Re: Variable Dateiverknüpfungen

BeitragVerfasst: 15. Nov 2020, 23:06
von theoS
Klar, dazu ist das Forum ja da.
Es ist vielleicht dann auch hilfreicher, wenn du beschreibst, was genau nicht geht, denn ein "noch nicht zum Laufen gebracht" hilft halt wenig den Grund dafür zu eruieren.
Das Ändern des Pfades ist ja jetzt so eingestellt, dass aus dem Dokument in dem das Makro drin ist, der Pfad ausgelesen wird.
Das geht natürlich nur dann, wenn das Dok gespeichert ist.
Beide Dateien müssen sozusagen im Moment im gleiche Ordner liegen. Also, wenn du eine Fehleranalyse durchführen willst, beschreibe die Voraussetzungen und was falsch ist. Dann kann man von der Ferne eher drauf kommen wo es hakt.