Episch war bezogen auf die Sprachelemente, die teils viele Zeichen enthalten. Ein Befehl in COBOL ist oft sehr lang. Leider habe ich aktuell kein Beispiel zur Hand.
Wie hast Du „episch“ aufgefasst?
Hmm, ich spreche kein VBA. Aber du hast Recht, das in Word oder ähnlichen zu machen wäre komfortabler.
Ich brauche kein Beispiel, die Erinnerung verblasst zwar allmählich, ist aber noch da. Ich bezog episch auf den Aufwand es zu lernen bzw. was damit zu bewerkstelligen. Wirklich schwierig fand ich COBOL nicht.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLOWORLD.
PROCEDURE DIVISION.
DISPLAY "Hello World in COBOL!".
STOP RUN.
Aber zum Thema: Falls jemand hier halbwegs fliessend VBA spricht, eine Übersetzung von @writers_headroom 's Skript wäre bestimmt willkommen, nützlich und durchaus nicht unrelevant für diesen Thread.
Sub MarkDuplicateParagraphsRed()
Dim dict As Object
Dim para As Paragraph
Dim paraText As String
' Dictionary für Absatztexte erstellen (Late Binding)
Set dict = CreateObject("Scripting.Dictionary")
' Durch alle Absätze im Dokument gehen
For Each para In ActiveDocument.Paragraphs
' Absatztext holen und säubern
paraText = Trim(para.Range.Text)
' (Optional) Falls Groß-/Kleinschreibung ignoriert werden soll:
' paraText = LCase(paraText)
' Prüfen, ob Absatz schon im Dictionary vorhanden ist
If dict.Exists(paraText) Then
' Absatz ist bereits vorgekommen -> rot markieren
para.Range.Font.Color = wdColorRed
Else
' Absatz ist neu -> in Dictionary hinzufügen
dict.Add paraText, 1
End If
Next para
' Aufräumen
Set dict = Nothing
MsgBox "Doppelte Absätze wurden in Rot markiert.", vbInformation, "Makro fertig"
End Sub
Wenn z. B. Excel geöffnet ist unter „Extras“ - „Makro“ - „Visual Basic Editor“. Gibt es da auch. Aber du brauchst halt M$ Office. Ansonsten gibt es bestimmt sinnvolle Alternativen. Oder eben doch .txt und Python. Wobei es für Python bestimmt Bibliotheken für den Umgang mit xyz Dateiformaten gibt.
Vermutlich ist @writers_headroom da aber fitter drin als ich. Ich programmiere nur noch zum Spass und wenn ich Lust habe
Ich muss gestehen, das habe ich übersehen. Ich dachte VBA ist speziell Microsoft.
Es gbit leider auch kein MS Access für den Mac.
Das Office 365 Paket habe ich.
Access brauchst du für das obige Script nicht. Es läuft in Word, allerdings nur unter Windows. Am Mac kommt die Fehlermeldung, dass die „Objekterstellung durch ActiveX-Komponente nicht möglich“ sei. Ich vermute, das dafür die Zeile mit „CreateObject(„Scripting.Dictionary“)“ verantwortlich ist und dass unter macOS keine ActiveX-Komponenten unterstützt werden.
Allerdings hat mich das auf die Idee gebracht, das VBA-Script in Javascript zu übersetzen und auf eine HTML-Seite anzuwenden. Damit kann man aus Papyrus einen HTML-Export durchführen und der Webbrowser zeigt anschließend die doppelten Absätze an.
Das Javascript sieht so aus:
<script language="javascript" type="text/javascript">
function MarkDuplicateParagraphs() {
const dict = new Array();
const para = document.getElementsByTagName("p");
for (let i = 0; i < para.length; i++) {
let p = para[i].textContent.trim();
if (dict.includes(p)) {
para[i].style.backgroundColor = "yellow";
}
else {
dict.push(p);
}
}
}
window.addEventListener("load", MarkDuplicateParagraphs);
</script>
Dieses Script setzt man in Papyrus unter Dokument > Dokument-Eigenschaften > Spezielles > HTML-Header für das Export-Format HTML ein. Beim nächsten HTML-Export erscheinen die doppelten Absätze dann mit gelbem Hintergrund in Safari, Firefox, Chrome etc.
Das ich für das Script kein MS Access brauche ist mir klar.
Aber für den Mac habe ich bisher keine vergleichbare Anwendung gefunden.
SIcher es gibt Claris Filemaker aber für ab und an eine Datenbank zu gestalten, incl. Front- und Backend, ist es mir zu kostenintensiv.