Hallo KingEisbaer,
oh mannn! Wat fürn Theater! Ich hab mir nen Wolf gesucht! Und das nicht nur mittels Xray, nein, auch via google. Ich weiß ja nicht wie es dir, beziehungsweise anderen ergeht, aber ich kann momentan keine Verbindung zu dem englischen Forum
http://www.oooforum.org aufbauen. Auch wenn mein englisch nicht wirklich geeignet ist um alles zu verstehen was dort geschrieben wird, so hatte ich doch zumindest die Hoffnung einen Code-schnipsel zu finden.
Und jetzt hatte ich doch noch mal google angeschmissen, und nach einem geeigneten Thread in dem genannten Forum gesucht. Und da ja google die Möglichkeit bietet in derem Cache zu suchen, hatte ich das auch gemacht. Das Ergebnis:
Trommelwirbel
Ich hab einen passenden Thread gefunden!
Guckst Du hier:
Closing DDE links with a macro
Das ist ein google Cache-link.
Dort hatte ich mir den folgenden Code rauskopiert.
Code: Alles auswählen
Sub Main
'xray thisComponent
oLinks = thisComponent.Links
'xray oLinks
REM OK, no index-access
aCategories() = oLinks.getElementNames()
for i = 0 to uBound(aCategories())
xray oLinks.getByName(aCategories(i))
next
'exit sub
REM links seem to be unrelated to DDE, try the text-fields:
oMasters = thiscomponent.getTextFieldMasters()
'xray oMasters
REM no index-access neither
aNames() = oMasters.getElementNames()
for i = 0 to uBound(aNames())
oMaster = oMasters.getByName(aNames(i)
if oMaster.supportsService("com.sun.star.text.fieldmaster.DDE")then
xray oMaster
aFields() = oMaster.DependentTextFields()
for j = 0 to uBound(aFields())
xray aFields(j)
next
endif
next
End Sub
Dieser Code bietet mehr als wir wirklich brauchen. Aber beim abarbeiten des Codes wurde mir vor Augen gehalten, dass ich an der falschen Stelle gesucht hatte. Denn ich hatte mich zu sehr in diese Richtung verbissen:
balu hat geschrieben:
Und dabei hatte ich festgestellt, dass es 7 Verlinkungen gibt:
"Tabellen"
Das ist einerseits wohl nicht ganz korrekt, und anderseits die Falsche Eigenschaft, oder wie auch immer. Denn der richtige Weg geht nämlich über
getTextFieldMasters, und nicht über
getLinks. Aber das wusste ich ja noch nicht, woher denn auch?
Also hatte ich mir via Xray mal den Code etwas genauer angeschaut, zumindest so weit wie ich das verstehen konnte, und ihn auf das hier gestuzt und geändert.
Code: Alles auswählen
sub Verknuepfung_loesen
oMasters = thiscomponent.getTextFieldMasters()
aNames() = oMasters.getElementNames()
for i = 0 to uBound(aNames())
oMaster = oMasters.getByName(aNames(i)
if oMaster.supportsService("com.sun.star.text.fieldmaster.DDE")then
' xray oMaster ' <= Das kann gelöscht werden.
oMaster.dispose
endif
next
end sub
Zum testen ob er bei dir auch funktioniert, schlage ich folgendes vor.
Nimm deine "Arbeitsplan_VORLAGE.odt" und lege dort ein neues Modul an. Und in dieses neue Modul fügst Du den Code ein, und speicherst die Datei. Danach kannst Du das Makro ausführen.
Beachte aber unbedingt folgendes!!
Falls die Datei "Arbeitsplan_VORLAGE.odt" mehr als nur eine DDE-Verknüpfung zu Calc hat, so werden diese alle gelöst.
Ich weiss aber auch noch nicht ob das an meinem rumgeteste lag, oder an dem von mir geänderten Code selber, auf jedenfall hatte sich bei mir OOo 3.3.0 nach Ausführung des Codes verabschiedet. Sprich, es war abgestürzt, wohl nicht sofort, aber es passierte. Also nicht wundern wenn es bei dir auch passiert.
Und nun mach ich Feierabend.
Gruß
balu