none
Word Datei: (Grafik) Verknüpfung per VBA Aufheben RRS feed

  • Frage

  • Hallo,

    Eine RTF Datei enthält in meinem Fall lediglich eine extern gespeicherte Grafik (per http verlinkt) und selbige möchte ich per VBA automatisch im Dokument abspeichern/einbetten.

    Manuell läßt sich das einfach in Word 2016 via Datei -> "Verknüpfung mit Datei bearbeiten" ; Anklicken des links und Drücken des Buttons: "Verknüpfung aufheben" erledigen.

    per VBA habe ich es so versucht:

    .ActiveDocument.Fields.Unlink

    Was aber keinen Effekt hat.

    Danke Vorab.

    Gruss Thomas

    Montag, 27. Mai 2019 14:09

Alle Antworten

  • Meistens lassen sich Aktionen per "Makro aufzeichen" verfolgen, wie denn Word oder auch Excel den Vorgang macht.
    Wenn es dann nicht funktioniert, ist eine Automatisierung dieses Vorganges nicht vorgesehen.
    Montag, 27. Mai 2019 15:32
  • Makro Code ist leer bei der Aufzeichnung. Das hatte ich schon getestet, aber leider vergessen aufzuschreiben.
    Montag, 27. Mai 2019 15:59
  • Ich habe es nun slow & dirty so gelöst,

    dass ich das alte inline shape auslese und zwischenspeichere,

    dann ein komplett neues Einfüge und erst dann das alte lösche

    .ActiveDocument.InlineShapes.AddPicture imagePath, False, True, oRange

    Das reicht für meine Zwecke.

    Montag, 27. Mai 2019 18:04
  • Vielleicht macht Microsoft dies intern ja genauso;-).
    Aber schön, dass du die Lösung preisgibst.
    Montag, 27. Mai 2019 19:49
  • Müsste eigentlich so gehen:

    Sub RemoveAllHyperlinks()
        For x = ActiveDocument.Hyperlinks.Count To 1 Step -1
            ActiveDocument.Hyperlinks(x).Delete
        Next
    End Sub
    

    Warum es wichtig ist von hinten nach vorne zu löschen?
    Wenn Du z.B. 5 Links hast, Du löschst den ersten dann rutscht der zweite auf den ersten Platz. Das Makro entfernt dann den zweiten Link und ignoriert dann den neuen Ersten.
    Alternativ könntest Du eine Schleife machen und den ersten Link so lange entfernen, bis der Count 0 ist.

    Grüße,
    Jakša

    Dienstag, 28. Mai 2019 05:45
  • Müsste eigentlich so gehen:

    Sub RemoveAllHyperlinks()
        For x = ActiveDocument.Hyperlinks.Count To 1 Step -1
            ActiveDocument.Hyperlinks(x).Delete
        Next
    End Sub

    Warum es wichtig ist von hinten nach vorne zu löschen?
    Wenn Du z.B. 5 Links hast, Du löschst den ersten dann rutscht der zweite auf den ersten Platz. Das Makro entfernt dann den zweiten Link und ignoriert dann den neuen Ersten.
    Alternativ könntest Du eine Schleife machen und den ersten Link so lange entfernen, bis der Count 0 ist.

    Grüße,
    Jakša

    nein, so kann es nicht gehen, da es keine Hyperlinks sind.

    Wie schon aus der Quellcdezeile darüber zu entnehmen, sind es Inlineshapes (die haben sicherlich auch einen Hyperlinlk, der aber RO ist und nicht über .ActiveDocument ansprechbar ist).


    • Bearbeitet Thoma Dienstag, 28. Mai 2019 11:31
    Dienstag, 28. Mai 2019 07:05
  • Sorry, dann habe ich Deine Anforderung falsch verstanden.
    Dienstag, 28. Mai 2019 07:13