Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [vb.NET] Rimpiazzare stringa word
Forum - C# / VB.NET - [vb.NET] Rimpiazzare stringa word

Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Segnala al moderatore
Postato alle 18:01
Giovedì, 12/01/2012
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):

Codice sorgente - presumibilmente VB.NET

  1. For i = -1000 To 1000
  2.             If docWord.ActiveWindow.Selection.Text.Contains("^" & i) Then
  3.                 docWord.ActiveWindow.Selection.Font.Superscript = True
  4.                 docWord.ActiveWindow.Selection.Text.Replace("^" & i, i)
  5.             End If
  6.         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! :)

PM Quote
Avatar
Snogar (Normal User)
Pro


Messaggi: 130
Iscritto: 09/01/2012

Segnala al moderatore
Postato alle 12:20
Venerdì, 13/01/2012
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!


PM Quote
Avatar
crash outside control (Normal User)
Expert


Messaggi: 217
Iscritto: 12/02/2008

Segnala al moderatore
Postato alle 12:49
Venerdì, 13/01/2012
Usa le regex. In questo modo non devi neanche sperare che l'utente inserisca valori contenuti nell'intervallo [-1000, 1000].


Anche un orologio fermo segna l'ora giusta due volte al giorno.
Hermann Hesse
PM Quote
Avatar
bruno.demarini (Normal User)
Pro


Messaggi: 84
Iscritto: 22/03/2010

Segnala al moderatore
Postato alle 22:33
Domenica, 15/01/2012
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 :)

PM Quote