Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Verknüpfungen per VBA ändern
zurück: Combobox1 als Variable weiter: 120 MB Textfile mit Makro auf das Wesentliche verkürzen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Robb
Im Profil kannst Du frei den Rang ändern


Verfasst am:
07. Feb 2012, 23:19
Rufname:

Verknüpfungen per VBA ändern - Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Ich habe ein Word-Dokument mit vielen Excel-Tabellen und Diagrammen, die ich über kopieren in Excel und dann mit Inhalt einfügen, Verknüpfung einfügen: Excel Arbeitsblatt Objekt in das Word-Dokument eingefügt habe. Nun möchte ich die Dateien in einen anderen Ordner verschieben. Aber dann müsste ich die Verknüpfungen alle manuell ändern. Gib es eine Möglichkeit dies per Makro oder VBA zu erledigen?
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
10. Feb 2012, 07:22
Rufname: Thomas
Wohnort: Celle


AW: Verknüpfungen per VBA ändern - AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Hallo Robb,

hier mal ein kleines Makro, welches die Arbeit erledigt.
Du musst den alten und neuen Pfad in die beiden Konstanten eintragen, dann werden ALLE Excel-Tabellen-Verknüpfungen, die auf den alten Pfad zeigen, auf den neuen Pfad verbogen.
Code:
Const ALTERPFAD = "Lw:\Pfad\Ordner"
Const NEUERPFAD = "Lw:\NeuerPfad\Neuer Ordner"

Sub LinkAktualisieren()

    For Each f In ActiveDocument.Fields
        If Left(f.OLEFormat.ClassType, 11) = "Excel.Sheet" And _
           f.LinkFormat.SourcePath = ALTERPFAD Then
            f.LinkFormat.SourceFullName = NEUERPFAD & "\" & f.LinkFormat.SourceName
        End If
    Next

End Sub

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!
Robb
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Feb 2012, 22:17
Rufname:

Re: AW: Verknüpfungen per VBA ändern - Re: AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

KeepCoolMan - 10. Feb 2012, 06:22 hat folgendes geschrieben:
Hallo Robb,

hier mal ein kleines Makro, welches die Arbeit erledigt.
Du musst den alten und neuen Pfad in die beiden Konstanten eintragen, dann werden ALLE Excel-Tabellen-Verknüpfungen, die auf den alten Pfad zeigen, auf den neuen Pfad verbogen.
Code:
Const ALTERPFAD = "Lw:\Pfad\Ordner"
Const NEUERPFAD = "Lw:\NeuerPfad\Neuer Ordner"

Sub LinkAktualisieren()

    For Each f In ActiveDocument.Fields
        If Left(f.OLEFormat.ClassType, 11) = "Excel.Sheet" And _
           f.LinkFormat.SourcePath = ALTERPFAD Then
            f.LinkFormat.SourceFullName = NEUERPFAD & "\" & f.LinkFormat.SourceName
        End If
    Next

End Sub


Hallo Thomas,

vielen Dank für Dein kleines Makro. Ich habe aber noch ein kleines Problem.

Bei Bedarf müsste ich den Speicherort und den Dateinamen ändern. Kann man das Ganze auch in einer Variablen an Const ALTERPFAD bzw. Const NEUERPFAD durch eingaben in Textboxen übergeben?

Danke für die Hilfe.
r.mueller
Gast


Verfasst am:
11. Feb 2012, 06:35
Rufname:

AW: Verknüpfungen per VBA ändern - AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Hallo

Code:


Dim strAlterPfad As String
Dim strNeuerPfad As String

Sub LinkAktualisieren()
strAlterPfad = "Lw:\Pfad\Ordner"
strNeuerPfad = "Lw:\NeuerPfad\Neuer Ordner"
'oder
strAlterPfad = Textbox1.Text
strNeuerPfad = Textbox2.Text
   
For Each fld In ActiveDocument.Fields
 If Left(f.OLEFormat.ClassType, 11) = "Excel.Sheet" And _
  fld.LinkFormat.SourcePath = strAlterPfad Then
  fld.LinkFormat.SourceFullName = strNeuerPfad & "\" & fld.LinkFormat.SourceName
 End If
Next

End Sub


Gruß
r.mueller
Robb
Im Profil kannst Du frei den Rang ändern


Verfasst am:
12. Feb 2012, 00:01
Rufname:

AW: Verknüpfungen per VBA ändern - AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Hallo,

habe den Code nun wie folgt eingegeben:

Code:
Dim strAlterPfad As String
Dim strNeuerPfad As String

Sub LinkAktualisieren()
strAlterPfad = Textbox1.Text
strNeuerPfad = Textbox2.Text
   
For Each fld In ActiveDocument.Fields
 If Left(f.OLEFormat.ClassType, 11) = "Excel.Sheet" And _
  fld.LinkFormat.SourcePath = strAlterPfad Then
  fld.LinkFormat.SourceFullName = strNeuerPfad & "\" & fld.LinkFormat.SourceName
 End If
Next

End Sub


Wenn ich das Makro ausführe, erhalte ich die Meldung "Objekt fehlt". Was habe ich falsch gemacht?
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
12. Feb 2012, 09:57
Rufname: Thomas
Wohnort: Celle

AW: Verknüpfungen per VBA ändern - AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Hallo Robb,

gibt es denn die beiden Textboxen? Und wo liegen sie? In einem Formular? Dann müsstest du den Verweis auf das Formular voranstellen, z.B.
Code:
strNeuerPfad = UserForm1.TextBox2.Text

Oder du holst dir die Ordner aus einem FileDialog, dann schliesst du auf jeden Fall Tippfehler aus:
Code:
Sub LinkAktualisieren()

strAlterPfad = HolePfad ' Textbox1.Text
strNeuerPfad = HolePfad ' TextBox2.Text
...
End Sub

Function HolePfad() As String
    Dim dlg As FileDialog
    Set dlg = Application.FileDialog(msoFileDialogFolderPicker)
    dlg.AllowMultiSelect = False
    If dlg.Show = -1 Then HolePfad = dlg.SelectedItems(1)
End Function

Kann es auch sein, dass du vielleicht eine Tabelle dabei hast, die nicht verknüpft, sondern nur eingefügt wurde? Dann hätte sie nämlich keine LinkFormat-Eigenschaft resp. Verknüpfung und die kann dann natürlich auch nicht aktualisiert werden. Das könntest du dann allerdings mit einer kleinen Bedingung prüfen und die Fehlermeldung vermeiden:
Zitat:
Dim strAlterPfad As String
Dim strNeuerPfad As String

Sub LinkAktualisieren()
strAlterPfad = Textbox1.Text
strNeuerPfad = Textbox2.Text

For Each f In ActiveDocument.Fields
If Not f.LinkFormat Is Nothing Then
If Left(f.OLEFormat.ClassType, 11) = "Excel.Sheet" And _
f.LinkFormat.SourcePath = strAlterPfad Then
f.LinkFormat.SourceFullName = strNeuerPfad & "\" & f.LinkFormat.SourceName
End If
End If
Next

End Sub

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!
Gast



Verfasst am:
12. Feb 2012, 23:30
Rufname:

AW: Verknüpfungen per VBA ändern - AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Hallo,

besteht nicht die Möglichkeit den alten Pfad und den Dateinamen über eine 1. Inbutbox und dann den neuen Pfad mit dem neuen Dateinamen über eine 2. Inbutbox zu übergeben.

Vielen Dank für Eure Hilfe.

PS: Es ist richtig das auch ein paar Tabellen direkt ins Dokument eingefügt sind.
KeepCoolMan
VBA-NonExpert ;) Office 2010


Verfasst am:
13. Feb 2012, 07:49
Rufname: Thomas
Wohnort: Celle


AW: Verknüpfungen per VBA ändern - AW: Verknüpfungen per VBA ändern

Nach oben
       Version: Office 2k (2000)

Guten Morgen,

das kannst du natürlich auch machen:
Zitat:
strAlterPfad = InputBox("bisheriger Pfad der Excel-Dateien" & vbCrLf & "(ohne abschließendes '\'):", "Verknüpfung ändern")
strNeuerPfad = InputBox("neuer Pfad der Excel-Dateien" & vbCrLf & "(ohne abschließendes '\'):", "Verknüpfung ändern")

If strAlterPfad <> "" And strNeuerPfad <> "" Then

For Each f In ActiveDocument.Fields
If Not f.LinkFormat Is Nothing Then
If Left(f.OLEFormat.ClassType, 11) = "Excel.Sheet" And _
f.LinkFormat.SourcePath = strAlterPfad Then
f.LinkFormat.SourceFullName = strNeuerPfad & "\" & f.LinkFormat.SourceName
End If
End If
Next
End If

Aber wozu der Dateiname? Wenn du nur eine Tabelle ändern willst, dann geht das per Klick im Dokument doch wohl wesentlich schneller und bequemer, oder?

_________________
Gruß Thomas

Ich freue mich über Feedback, Kritik und Verbesserungsvorschläge...
Wer will, findet Möglichkeiten; wer nicht will, findet Gründe! :: Unt wär Rächdshraibfela fint, daaf sie behaltn!
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Word Serienbriefe: Feldfunktionen in mehreren Serienbriefen gleichzeitig ändern 10 SBG 794 24. Nov 2011, 08:59
SBG Feldfunktionen in mehreren Serienbriefen gleichzeitig ändern
Keine neuen Beiträge Word Serienbriefe: Datenquellen ändern 0 Kojiro 1000 22. Aug 2011, 11:46
Kojiro Datenquellen ändern
Keine neuen Beiträge Word Serienbriefe: .CustomDocumentProperties Namen ändern und neuorganisieren 3 boomshalek 2126 06. Jul 2011, 13:52
boomshalek .CustomDocumentProperties Namen ändern und neuorganisieren
Keine neuen Beiträge Word Serienbriefe: Excel-Tabelle per Serienbrief dynamisch in Word 0 Panix 1219 05. Jul 2011, 12:55
Panix Excel-Tabelle per Serienbrief dynamisch in Word
Keine neuen Beiträge Word Serienbriefe: SQL Befehl Pfad ändern 1 doschtinator 1911 10. Mai 2011, 15:48
doschtinator SQL Befehl Pfad ändern
Keine neuen Beiträge Word Serienbriefe: Speicherort von Datenquelle und Serienbrief ändern 2 Joe1075 2327 06. Mai 2011, 10:27
Gast Speicherort von Datenquelle und Serienbrief ändern
Keine neuen Beiträge Word Serienbriefe: Word-Serienbrief in PDF umwandeln und Versand per Outlook 4 MarcelK 17652 20. Apr 2010, 11:38
Gast Word-Serienbrief in PDF umwandeln und Versand per Outlook
Keine neuen Beiträge Word Serienbriefe: Textmarken per Includetext einfügen in Abhängigkeit von ASK 0 Robotixx 1804 13. Jul 2009, 19:45
Robotixx Textmarken per Includetext einfügen in Abhängigkeit von ASK
Keine neuen Beiträge Word Serienbriefe: Neues Leerdokument mit Verknüpfungen in andere Dokumente 1 alex.krumnow 1202 01. Jul 2009, 23:27
charlybrown Neues Leerdokument mit Verknüpfungen in andere Dokumente
Keine neuen Beiträge Word Serienbriefe: Durch Seriendruck Schattierung bedingt ändern 1 SirSten 1508 26. Mai 2009, 09:08
SirSten Durch Seriendruck Schattierung bedingt ändern
Keine neuen Beiträge Word Serienbriefe: .mdb per e-mail 2 schokomo 999 17. Apr 2009, 09:20
Gast .mdb per e-mail
Keine neuen Beiträge Word Serienbriefe: Serienfeld nachträglich automatisch ändern? 8 Saft 2129 11. Feb 2009, 14:38
Saft Serienfeld nachträglich automatisch ändern?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Tipps