Utente:Sailko/Sandbox
Script in Word per togliere overlink su date
modificaScript che può automatizzare la rimozione della maggior parte degli overlink a date nelle pagine di Wikipedia, particolarmente utile su voci di grandi dimensioni con numerosi link da rimuovere.
Non è un bot e non richiede alcuna autorizzazione per essere utilizzato, ma richiede sempre un controllo manuale al termine di ogni processo per verificare che le modifiche siano corrette e che non siano stati lasciati errori e link aperti.
Il codice è stato scritto tramite AI.
Premessa
modifica- Disattivare la formattazione delle virgolette
- Aprire Word su un documento nuovo o qualsiasi documento
- Menù File (in alto a sinistra)
- Cliccare su "Opzioni" (in basso nel menu)
- Nella finestra "Opzioni di Word", selezionare "Strumenti di correzione" dal menu a sinistra
- Cliccare sul pulsante "Opzioni correzione automatica…"
- Nella linguetta "Formattaz. autom. durante la digitazione", disattivare "Virgolette semplici con virgolette inglesi"
- Premere OK finché si chiudono le finestre
Inserire uno script
modifica- Premere Alt+F11 per aprire l'Editor VBA
- A sinistra aprire la cartella "Normal", cliccare su "Moduli"
- Nel menù "Inserisci" cliccare su "Modulo"
- Apparirà un nuovo modulo chiamato ad esempio "Modulo1", cliccarci
- Nella finestra principale dell'editor incollare questo testo:
Sub SostituzioniAutomatiche() Application.ScreenUpdating = False Application.StatusBar = "Sto eseguendo le sostituzioni..." Dim sostituzioni As Object Set sostituzioni = CreateObject("Scripting.Dictionary") Dim i As Integer Dim s As Variant Dim doppio As String Dim chiave As Variant ' === Gruppo 0 === (numeri da [[1]] a [[99]]) For i = 1 To 99 sostituzioni.Add "[[" & CStr(i) & "]]", CStr(i) Next i ' === Gruppo 0B === (formato [[1 a.C.]] ? 1 a.C., fino a [[99 a.C.]] ? 99 a.C.) For i = 1 To 99 sostituzioni.Add "[[" & CStr(i) & " a.C.]]", CStr(i) & " a.C." Next i ' === Gruppo 0C === (formato 00|00 ? 00, 01|01 ? 01, ..., 99|99 ? 99) For i = 0 To 99 doppio = Format(i, "00") sostituzioni.Add doppio & "|" & doppio, doppio Next i ' === Gruppo 1 === sostituzioni.Add "[[1", "1" sostituzioni.Add "[[2", "2" ' === Gruppo 2 === For i = 0 To 9 sostituzioni.Add CStr(i) & "]]", CStr(i) Next i ' === Gruppo 3A === Dim secoli As Variant secoli = Array("Duecento", "Trecento", "Quattrocento", "Cinquecento", "Seicento", _ "Settecento", "Ottocento", "Novecento") For Each s In secoli sostituzioni.Add "[[" & s & "]]", s Next s ' === Gruppo 3B === Dim secoliRomani As Variant secoliRomani = Array("XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX") For i = 0 To UBound(secoliRomani) sostituzioni.Add "[[" & secoliRomani(i) & " secolo|" & secoli(i) & "]]", secoli(i) Next i ' === Gruppo 4A === (secoli d.C.) Dim numeriRomani As Variant numeriRomani = Array("I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", _ "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX", "XXI") For Each s In numeriRomani sostituzioni.Add "[[" & s & " secolo]]", s & " secolo" Next s ' === Gruppo 4B === (secoli a.C.) Dim numeriRomaniAC As Variant numeriRomaniAC = Array("I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX", "X", _ "XI", "XII", "XIII", "XIV", "XV", "XVI", "XVII", "XVIII", "XIX", "XX", _ "XXI", "XXII", "XXIII", "XXIV", "XXV", "XXVI", "XXVII", "XXVIII", "XXIX", "XXX") For Each s In numeriRomaniAC sostituzioni.Add "[[" & s & " secolo a.C.]]", s & " secolo a.C." Next s ' === Gruppo 5 === (anni da 999 a 200) For i = 999 To 200 Step -1 sostituzioni.Add "[[" & CStr(i), CStr(i) Next i ' === Gruppo 6 === (formato [[X secolo|X]] ? X) For Each s In numeriRomani sostituzioni.Add "[[" & s & " secolo|" & s & "]]", s Next s ' === Gruppo 7 === (formato [[XXX secolo a.C.|XXX]] ? XXX) For Each s In numeriRomaniAC sostituzioni.Add "[[" & s & " secolo a.C.|" & s & "]]", s Next s ' === Gruppo 8 === (chiusura errata a.C.]] ? a.C.) sostituzioni.Add "a.C.]]", "a.C." ' === Esecuzione delle sostituzioni (ottimizzata) === For Each chiave In sostituzioni.Keys If InStr(ActiveDocument.Content.Text, chiave) > 0 Then With ActiveDocument.Content.Find .Text = chiave .Replacement.Text = sostituzioni(chiave) .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .Execute Replace:=wdReplaceAll End With End If Next chiave ' Salva solo se documento già salvato If ActiveDocument.Path <> "" Then ActiveDocument.Save End If ' Seleziona tutto e taglia (Ctrl + X) ActiveDocument.Content.Select Selection.Cut Application.ScreenUpdating = True Application.StatusBar = False End Sub
- Puoi anche rinominare il modulo selezionandolo, andando alla finestra "Proprietà" (in basso a sinistra) e modificando il nome nella proprietà (Name).
- Chiudere l'editor VBA.
- Salvare il documento Word con qualsiasi nome, selezionando nel menu a tendina "Tipo file" (o "Salva come") **"Documento di Word con attivazione macro (.docm)"**.
- Chiudere Word.
Dopo questa procedura si può anche eliminare il file salvato, però il modulo resterà comunque attivo per altri file.
Usare lo script
modifica- Entrare in Wikipedia e andare sulla pagina da editare.
- Cliccare su "Modifica" (markup wiki, non editor visuale) oppure premere sulla tastiera ALT+SHIFT+E (in alcune skin si deve anche cliccare Invio dopo).
- Selezionare tutto (CTRL+A) e copiare il testo (CTRL+C).
- Aprire Word, creare un nuovo documento e incollare il testo.
- Premere ALT+F8: lo script, se non ce ne sono altri, dovrebbe essere già selezionato (altrimenti selezionarlo) e cliccare su "Esegui" (o premere Invio).
- Al termine, lo script seleziona e taglia il testo: tornare quindi sulla pagina wiki ancora in modalità "Modifica".
- Selezionare tutto e incollare il testo proveniente da Word (CTRL+A e CTRL+V).
- Salvare (ALT+SHIFT+S).
Controllare il risultato
modificaAttenzione: lo script edita alcuni numeri da cui il link non va rimosso, come nomi di pagine che finiscono per numeri o didascalie di immagini che finiscono per numero, per cui è sempre necessario controllare il risultato.
Si possono usare due modi, a seconda della lunghezza della pagina. Per pagine brevi si può aprire la cronologia e guardare cosa si è editato. Le parentesi quadre non editate in coppia dovrebbero essere facilmente visibili, quindi basta andare in "Modifica" e riaggiungerle dove erroneamente rimosse.
Il secondo modo è cercare (CTRL+F) dal ns0 se ci sono "[[" (editando eventuali link rimasti aperti), poi "]]" e infine "|". Se nessuno di questi caratteri è visibile nel ns0, vuol dire che le sostituzioni hanno avuto buon fine e che non sono stati lasciati link aperti. Questi caratteri possono essere evidenziati tramite piccole applicazioni java, come Tampermonkey per Mozilla Firefox.
Si può anche controllare se ci sono altri link da rimuovere, quali piped link non standard, link a decenni, link a giorni, link non standard come [[1949|anno precedente]], tutti da rimuovere manualmente.
Mentre si fa il controllo ci si può coordinare per far lavorare lo script su una pagina successiva, in modo da non dover aspettare e massimizzare il tempo.
Quando si è finito si può chiudere Word senza salvare il documento.