Oppure

Loading
12/01/12 17:01
bruno.demarini
Ciao a tutti, sto gestendo l'automazione con word e ho un Document in cui sono presenti numerosi elevamenti a potenza, indicati con ^numero. Per esempio: 4 cm^2, 4 m^3, 6.022 * 10^23 etc... Io vorrei sostituire tutte le occorrenze di "^numero" con "numero" e far sì che tale numero venga mostrato come apice.
Avevo pensato a questo inelegante escamotage (confidando nel fatto che l'utente non inserisse elevamenti con esponente maggiore di 1000 o minore di -1000):

For i = -1000 To 1000
            If docWord.ActiveWindow.Selection.Text.Contains("^" & i) Then
                docWord.ActiveWindow.Selection.Font.Superscript = True
                docWord.ActiveWindow.Selection.Text.Replace("^" & i, i)
            End If
        Next


Dove docWord è un word.document.
I miei dubbi sono questi:
1) impostare superscript a true prima di rimpiazzare fa sì che il carattere sostituto venga scritto in apice?
2) Col debug, noto che docWord.ActiveWindow.Selection.Text è sempre nullo, quindi questo codice non viene mai eseguito...

Dove sbaglio?
Come posso ottenere il risultato che voglio (mi basta anche solo la logica)? Ciò che mi crea più problemi è che l'esponente potrebbe essere di 1 cifra come di 2 o più... Grazie! :)
aaa
13/01/12 11:20
Snogar
docWord.ActiveWindow.Selection.Text è nullo perche credo che il comando si riferisca al testo selezionato .....prova a sottolineare il testo con il cursore del mouse e ripeti il test!
aaa
13/01/12 11:49
crash outside control
Usa le regex. In questo modo non devi neanche sperare che l'utente inserisca valori contenuti nell'intervallo [-1000, 1000].
aaa
15/01/12 21:33
bruno.demarini
Grazie ad entrambi. Alla fine ho risolto considerando valori compresi nell'intervallo [-99; +99] perché con certezza mi bastavano quelli e anche perché anche cercando in giro non sono riuscito a capire come conciliare le regular expressions (che so usare) con l'automazione word. Magari in futuro mi documenterò meglio. Grazie, ciao :)
aaa