Alla fine, ho trovato una soluzione. Riporto il tutto, magari a qualcuno potrà servire.
Ho ragionato sui CAMPI e sulla loro sostituzione.
Con una semplice routine, ho letto il testo del CAMPO impostato e il suo numero, individuando quello che mi occorreva.
Sub campi()
Dim Fld As Field
For Each Fld In ActiveDocument.Fields
Debug.Print Fld.Code, Fld.Index
Next
End Sub
Dopo di che ho selezionato il range del CAMPO in oggetto (1 in questo caso, ma in altri fogli era diverso) sostituendolo con il testo modificato. Questo il codice.
Set rngTemp = ActiveDocument.Fields(1).Code
rngTemp.Text = "SET lingua " & IIf(iLingua = 1, "2", "1")
ActiveDocument.Fields(1).Update
Il codice complessivo, quindi diviene il seguente:
Private Sub TastoLingua_Click()
Dim iLingua As Integer, mess As String
Dim SLRange As Range, rngTemp As Range
'
On Error GoTo errori
Set SLRange = ActiveDocument.Bookmarks("lingua").Range
Debug.Print SLRange.Text
iLingua = Val(SLRange.Text)
Set rngTemp = ActiveDocument.Fields(1).Code
rngTemp.Text = "SET lingua " & IIf(iLingua = 1, "2", "1")
ActiveDocument.Fields(1).Update
Selection.WholeStory
Selection.Fields.Update
Selection.HomeKey Unit:=wdStory
Fine:
Selection.HomeKey Unit:=wdStory
'ActiveDocument.Protect Password:="pippo", NoReset:=False, Type:= _
wdAllowOnlyReading, UseIRM:=False, EnforceStyleLock:=False
Exit Sub
errori:
mess = MsgBox("Errore n°: " & Err.Number & " --> " & Err.Description, vbCritical + vbOKOnly, "CAMBIO LINGUA")
Resume Fine
End Sub
Molto semplice, ma ho dovuto spnderci un bel po' di tempo.
Spero sia d'aiuto.