Word, campo nescosto per automazione che non si elimina
Buongiorno.
Word mi sta facendo venire la nausea. Ogni volta che cerco di automatizzarlo (e ho già realizzato un bel po' di modelli, mio malgrado), presenta sempre problemi assurdi.
In questo caso, ho inserito un tasto ActiveX per sostituire il valore in un segnalibro.
Questo è il codice:
codice:
Private Sub TastoLingua_Click()
Dim iLingua As Integer
Dim SLRange As Range
'
Set SLRange = ActiveDocument.Bookmarks("lingua").Range
Debug.Print SLRange.Text
iLingua = Val(SLRange.Text)
Set SLRange = ActiveDocument.Bookmarks("LinguaSel").Range
SLRange.Select
Selection.MoveRight Unit:=wdSentence, Count:=1, Extend:=wdExtend
Selection.Delete
Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:= _
"SET lingua " & IIf(iLingua = 1, "2", "1"), PreserveFormatting:=True
'
Selection.Text = "PG19/PO"
'
Selection.WholeStory
Selection.Fields.Update
Selection.HomeKey Unit:=wdStory
End Sub
In pratica, in una cella di una tabella, crea il CAMPO seguente (1):
{ SET lingua 1 \*MERGEFORMAT }
In questo modo, crea il segnalibro lingua e gli assegna il valore. Alla successiva pressione del tasto, il valore cambia e passa a 2 (o a 1 in caso contrario)
Nel documento, ci sono poi CAMPI come il seguente (2):
{ IF lingua = 1 "AAA" "BBB" \*MERGEFORMAT }
Funziona tutto egregiamente, solo che ho un problema: le istruzione per l'eliminazione del segnalibro (queste)
codice:
Set SLRange = ActiveDocument.Bookmarks("LinguaSel").Range
SLRange.Select
Selection.MoveRight Unit:=wdSentence, Count:=1, Extend:=wdExtend
Selection.Delete
eliminano solo la scritta e lasciano al loro posto il CAMPO (1), che quindi viene duplicato ad ogni pressione del tasto.
Ho provato anche così:
codice:
Set SLRange = ActiveDocument.Bookmarks("LinguaSel").Range
SLRange.Select
Selection.Delete
Ma quello che accade è che mi cancella il primo carattere della scritta (la "P") e lascia al suo posto il CAMPO (1).
Pure così non si elimina niente: codice:
ActiveDocument.Bookmarks("LinguaSel").Range = ""
Non so proprio come fare. La cosa buffa è che se svolgo le operazioni visualizzando i campi (cioè premendo Alt-F9) la macro funziona benissimo... misteri di WORD.
Sottolineo che sia il tasto, sia il campo, sono in una tabella, ma in 2 celle diverse.
Può essere che stia facendo qualche bischerata. Però, il sistema funziona correttamente (semplicemente lascia un CAMPO (1) in più ad ogni azione del tasto, che non è proprio la cosa giusta).
Se qualcuno ha tempo di guardarci, mi fa un favore.