Page 2 of 3

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-03-25 11:08
by thomas.riehm
In Word 2003 geht es noch einfacher:

1. Extras/Makro/Makros
2. "FussnotenPunkteEinfuegen" auswählen und "Bearbeiten" anklicken
3. Im Makro-Editor ans Ende des angezeigten Makro-Textes gehen und den neuen Code aus der Zwischenablage einfügen (am besten beide Makros nacheinander)
4. Makro-Editor schließen
5. Unter Extras/Makro/Makros sollten jetzt alle 3 Makros stehen

Beste Grüße
Thomas Riehm

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-03-25 11:15
by thomas.riehm
Ups, da war mir tatsächlich beim Makro-Kopieren ein Fehler passiert. Ich habe meinen Original-Beitrag entsprechend geändert; jetzt sollte es klappen, wenn Sie von dort erneut kopieren.

Beste Grüße
Thomas Riehm

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-03-27 16:05
by Sulwej
Lieber Herr Riehm,
haben Sie vielen Dank für Ihre Hilfe! Ich habe inzwischen dank Ihrer Vorlagen ein bisschen mehr über Makros herausgefunden und mir das Makro nach meinen Vorstellungen angepasst - jetzt funktioniert alles und das ist eine SUPER Arbeitserleichterung!
:-)
Herzliche Grüße+noch einen schönen Sonntag
Solveig

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-08 21:35
by eidbrainstorm
Hallo,

EDIT:
das Makro zum Einfügen von Punkten funktioniert recht gut, nur übersieht/ ignoriert das Skript Fußnoten, bei denen eine Zahl am Ende steht.

Müller. <-- Punkt wird eingefügt
Müller, 1999 <-- Punkt wird nicht eingefügt
Müller, 1999, S. 19 <-- Punkt wird nicht eingefügt

Was müsste man im Makro ändern, damit das funktioniert?

Da ich alle drei angegebenen Skripte in eines gesteckt und einen Zähler integriert habe, kann ich überprüfen, wie viele Punktduplikate, Leerzeichenduplikate und fehlende Punkte entdeckt wurden. Inwieweit greifen die Skripte in Felder ein? Weil bei jedem Durchgang 9 Leerzeichen und 9 Punkte doppelt gefunden worden sind. - In den Feldern sind häufig doppelte Leerzeichen zu finden.

OS: Win 7, Word 2010

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-08 22:57
by Jörg Pasch
Bitte posten Sie die aktuelle Version des Makros hier. Der Thread ist etwas unübersichtlich geworden.

Gruss
Jörg

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-08 23:06
by eidbrainstorm
Hier der Code des Makros:
Code: Select all
Sub Fußnote_abschließenden_Punkt_erstellen()
' Einfügen eines Punktes am Ende aller Fußnoten

Dim Rng As Range
Dim par As Paragraph
Dim parrng As Range
Dim A, B, C As Integer
A = 0
B = 0
C = 0

Set Rng = ActiveDocument.StoryRanges(wdFootnotesStory)

For Each par In Rng.Paragraphs
    Set parrng = par.Range
    parrng.Collapse direction:=wdCollapseEnd
    parrng.Move Unit:=wdCharacter, Count:=-1
    parrng.MoveStart Unit:=wdCharacter, Count:=-1
    If InStr(".!?" + Chr$(34) + ChrW(9632) + ChrW(8220) + ChrW(8221), parrng.Text) = 0 Then
        parrng.Select
        parrng.Collapse direction:=wdCollapseEnd
        parrng.InsertBefore Text:="."
        A = A + 1
    End If
Next par

Ende:
'Punktduplikate löschen
For Each Rng In ActiveDocument.StoryRanges
With Rng.Find
    .ClearAllFuzzyOptions
    .ClearFormatting
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .Replacement.ClearFormatting
    .Text = ".."
    .Replacement.Text = "."
    .Execute Replace:=wdReplaceAll
End With
B = B + 1
Next

'Leerzeichenduplikate löschen
For Each Rng In ActiveDocument.StoryRanges
With Rng.Find
    .ClearAllFuzzyOptions
    .ClearFormatting
    .MatchCase = True
    .MatchWholeWord = False
    .MatchWildcards = False
    .Replacement.ClearFormatting
    .Text = "  "
    .Replacement.Text = " "
    .Execute Replace:=wdReplaceAll
End With
C = C + 1
Next

MsgBox A & " Punkte gesetzt, " & B & " Punktduplikate gelöscht, " & C & " Leerzeichenduplikate gelöscht"

End Sub

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-09 07:21
by thomas.riehm
Guten Morgen,

also im Code kann ich keinen Fehler feststellen, der dazu führen könnte, dass die Punkte hinter Zahlen nicht gesetzt werden, ansonsten aber schon. Testen kann ich es nur mit Word 2003, und da funktioniert es auch bei Zahlen (gerade mit Ihrem Code getestet).

Haben Sie einmal versucht, im Debugging-Modus des Word Makro-Editors die Einzelschrittverfolgung zu aktivieren, um zu sehen, was das Makro tatsächlich macht bzw. nicht macht? Vielleicht kommen Sie so dem Fehler auf die Spur...

Beste Grüße
Thomas Riehm

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-09 09:25
by eidbrainstorm
Hallo und Danke für die schnelle Antwort.
Habe das Makro mal in Einzelschritten durchlaufen lassen, wobei drei Fußnoten getestet wurden. Die ersten beiden Fußnoten enthielten Zitate mit Seitenzahlen, die dritte Fußnote lediglich Text. Alle drei Fußnoten habe ich ohne Punkte gelassen. Die Prozedur geht bei den ersten beiden Fußnoten bis If und springt dann zu EndIf, was ja heißen würde, dass die Bedingung nicht zutrifft. Bei der anderen Fußnote hingegen wird der Punkt gesetzt.

Ich gehe inzwischen davon aus, dass das Makro grundsätzlich die Zitate ignoriert, da diese automatisch als Feld aus dem Quellenverzeichnis eingefügt wurden. Könnte das der Grund sein?

Die Zitate sind Felder in der Form: {CITATION Bla06\ p33\ l1031}, wobei Bla06 der Tag der Quelle ist, p33 die Seitenzahl und l1031 die Darstellungsform.

Was bedeuten im Makro die einzelnen Chr Charaktere? Das sind sicherlich Einschränkungen bei der Durchsuchung der Fußnoten?

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-09 09:40
by thomas.riehm
Das wird der Unterschied sein: Die Feld-Zitationen. Bei Word 2003 sind es keine Felder, sondern gewöhnlicher Text.

Schauen Sie doch bitte einmal nach, welchen Wert "parrng.Text" hat, wenn das Makro in der "If"-Zeile ist (einfach mit der Maus im Makrotext darüberfahren). Gleiches auch für die Instr-Funktion, um den Rückgabewert zu prüfen. Das könnte vielleicht Aufschluss geben.

Ggfs. hilft auch ein "Msgbox("Aktuelles Zeichen: "+parrng.Text+", Zeichencode: "+str(ascW(parrng.text))) eine Zeile vor "If" weiter bei der Diagnose.

DIe Chr-Charaktere sind diverse Formen von Anführungszeichen (englisch, französisch, deutsch oben), das sollte eigentlich nicht stören. Aber man weiß ja nie, wie Word das Zeichen versteht.

Beste Grüße
Thomas Riehm

Re: "Zwischen-"Punkt bei Mehrfachbelegen entfernen

PostPosted: 2011-06-09 09:57
by eidbrainstorm
Bei den ersten Zitaten ist parrng.Text als "" definiert.
Beim letzten Zitat ist parrng.Text als "e" definiert, was dem letzten Buchstaben des Zitates entspricht.

Prinzipiell könnte man alle Zitate als statischen Text umwandeln, nur dann werden Änderungen aus dem Quellenverzeichnis nicht übernommen und das wäre auch nicht der Sinn der Sache.

Kann man generell davon ausgehen, dass das Makro Felder missachtet und nur statischen Text "sieht"?

Oder liegt es an der Deklaration des Feldes, dass dieses mit einer geschweiften Klammer beginnt? - dann könnte man doch in die Charaktere die geschweifte Klammer mit einfügen - also Chr$(123) und Chr$(125)?