Hallo, ich versuche anhand einer hyperlinkTextSource den dazugehörigen Hyperlink zu finden. Das funktioniert, in dem ich alle Dokument-Hyperlinks in einer Schleife durchforste, bis ich denjenigen gefunden habe, der zu der HyperlinkTextSource gehört. Leider ist das recht langsam bei mehreren Tausend Hyperlinks in einem Dokument. Gibt es einen direkten Weg um von einer HyperlinkTextSource zum Hyperlink zu kommen?
ich hatte bei der Entwicklung meines WpsHyperlinkInspector das gleiche Problem. Um die verwaisten Hyperlinkquellen zu finden, brauche ich natürlich die zugehörigen Hyperlinks. Eine von mehreren Möglichkeiten ist der Vorschlag von Hans, ich würde allerdings die Verknüpfung über die Labeleigenschaft vornehmen. Wenn Du einmal die Eigenschaft zugewiesen hast, brauchst Du die Hyperlinks nur noch zu durchsuchen, wenn die entsprechende Labeleigenschaft fehlt oder ungültig geworden ist.
Das Durchsuchen einers Arrays oder einer Sammlung ist bei richtiger Strategie eingentlich nicht langsam, langsam ist der Zugriff auf die Hyperlinks. Deshalb könnte, wenn sich die Hyperlinks während des Skriptlaufes nicht verändern, oder Du über die Veränderungen Buch führst, auch folgendes eine erhebliche Geschwindigkeitssteigerung bringen:
1. Einlesen aller Source-IDs der Hyperlinks in ein Array 2. Sortieren des Arrays 3. Dieses Array binär durchsuchen.
Bei dieser Technik gibt es natürlich weitere Möglichkeiten, wenn Du z. B. die Hyperlink-ID zusätzlich abspeicherst, kannst Du leicht die Gültigkeit des zugehörigen Hyperlinks überprüfen.