Hallo Mitleidende
Wenn man in Word 2003 unter Extras/Sprache/Silbentrennung bei „automatische Silbentrennung“ ein Häkchen macht, sollte es vernünftigerweise immer eingeschaltet bleiben. Aber es ist nicht so! Wenn man dasselbe Dokument oder ein neues öffnet, ist das Häkchen jedesmal wieder verschwunden. Ich habe das dann auch im „Normal.dot“ eingestellt; aber auch das hilft nichts.
Als Notlösung habe ich nun ein Makro im Normal.dot abgelegt:
Private Sub Document\_New()
ActiveDocument.AutoHyphenation = True
End Sub
Private Sub Document\_Open()
ActiveDocument.AutoHyphenation = True
End Sub
das funzt, aber: weiss jemand eine schlauere Lösung?
Erich
hallo
soweit ich mich erinnern kann, ist diese einstellung dokumentspezifisch und nicht anwendungsglobal. sieht man leider nicht so einfach - etliche der einstellungsmöglichkeiten unter extras-optionen sind eigentlich dokumentformatierungen und keine „echten“ optionen.
was also gehen müsste ist diese option in der normal.dot zu aktivieren. also normal.dot explizit öffnen, die einstellung setzen, irgendwas noch ändern (z.b. leerzeichen einfügen und wieder löschen), normal.dot speichern und schließen.
der schwachsinn mit dem leerzeichen soll sicherstellen, dass die normal.dot auch tatsächlich gespeichert ist. word ist nämlich so „schlau“, dass es nur dann speichern, wenn das dokument auch tatsächlich geändert wurde. ansonsten tut der speichern-button genau gar nix. ob das dokument geändert wurde, erkennt word an einem internen „isdirty“-flag, dass normalerweise bei änderungen gesetzt wird. manche aktionen werden zwar im dokument gespeichern, setzen das flag aber nicht.
ab nun sollte die option also zumindest für alle „normalen“ dokumente gelten. ev. für alle anderen dokumentvorlagen bei dir nachziehen.
lg
erwin
Hallo Erwin,
was also gehen müsste ist diese option in der normal.dot zu
aktivieren. also normal.dot explizit öffnen, die einstellung
setzen, irgendwas noch ändern (z.b. leerzeichen einfügen und
wieder löschen), normal.dot speichern und schließen.
der schwachsinn mit dem leerzeichen soll sicherstellen, dass
die normal.dot auch tatsächlich gespeichert ist. word ist
nämlich so „schlau“, dass es nur dann speichern, wenn das
dokument auch tatsächlich geändert wurde. ansonsten tut der
speichern-button genau gar nix. ob das dokument geändert
wurde, erkennt word an einem internen „isdirty“-flag, dass
normalerweise bei änderungen gesetzt wird. manche aktionen
werden zwar im dokument gespeichern, setzen das flag aber
nicht.
Ja, Oh Wunder, mit dem Leerzeichentrick geht es!
Danke
Erich
Hallo Erwin,
wurde, erkennt word an einem internen „isdirty“-flag, dass
normalerweise bei änderungen gesetzt wird. manche aktionen
werden zwar im dokument gespeichern, setzen das flag aber
nicht.
Nachdem mein ursprüngliches Problem gelöst ist interessiere ich mich doch noch für die „Hintergründe“. Kannst du mir etwas mehr Informationen über das isdirty-flag geben? Wo sitzt das und wie sieht es aus (ich nehme an, dass es im DOC mit einem Hex-Editor gefunden werden kann; Literatur?
Danke nochmals
Erich
hallo erich
also, bis word 95 hies die basic-funktion „isDirty()“. ab word 97 ist es die eigenschaft „saved“ vom document-object. in der dokumentstruktur auf der platte wirst du es nicht finden, da es dort ja keinen sinn hat. ist also eine reine hauptspeicher-aktion.
das document.save schaut zuerst nach, ob saved false ist. nur dann scheint es was zu tun (zumindest in allem jene fällen, in denen ich versucht habe, es nachzuvollziehen). ansonsten macht das save absolut nichts - nichteinmal die dateiattribute werden verändert.
gewisse änderungen am dokument werden zwar mit dem dokument gespeichert, lösen aber kein „saved = false“ aus. dies sind vor allem die änderungen der ansicht und einige einstellungen über extras-optionen bzw. eben extras-silbentrennung. alles leider sehr mühsam und auf den ersten blick nicht nachvollziehbar.
ich habe mir daher schon seit langem angewöhnt, immer wieder mal ein leerzeichen zu tippen und wieder zu löschen - dann klappts auch mit dem speichern.
lg
erwin
hallo erwin
Ich habe das „saved“ im VBA-Editor gesehen und bin insofern begfriedigt!
Im weiteren werrde ich immer nach deinem Rezpet mit Leerzeichen operieren.
Danke
Erich