Procedura: escludere i segni di paragrafo durante l'inserimento di intervalli
Ogni volta che si crea un oggetto Range basato su un paragrafo, tutti i caratteri non stampabili, ad esempio i segni di paragrafo, vengono inclusi nell'intervallo. Può essere necessario inserire testo da un paragrafo di origine in un paragrafo di destinazione. Se non si desidera suddividere il paragrafo di destinazione i paragrafi distinti, è necessario prima rimuovere i segni di paragrafo dal paragrafo di origine. Inoltre, poiché all'interno del segno di paragrafo sono memorizzate le informazioni sulla formattazione dei paragrafi, può essere necessario non includere tali informazioni durante l'inserimento dell'intervallo in un paragrafo esistente.
Si applica a: le informazioni fornite in questo argomento sono valide per i progetti a livello di documento e di applicazione per Word 2007 e Word 2010. Per ulteriori informazioni, vedere Funzionalità disponibili in base ai tipi di progetto e applicazioni di Office.
Con la routine di esempio riportata di seguito vengono dichiarate due variabili stringa, viene recuperato il contenuto del primo e del secondo paragrafo nel documento attivo e viene scambiato tale contenuto. Nell'esempio viene quindi illustrato come rimuovere il segno di paragrafo dall'intervallo utilizzando il metodo MoveEnd e inserendo testo all'interno del paragrafo.
Per controllare la struttura dei paragrafi durante l'inserimento di testo
Creare due variabili intervallo per il primo e il secondo paragrafo e recuperarne il contenuto utilizzando la proprietà Text.
L'esempio di codice seguente può essere utilizzato in una personalizzazione a livello di documento.
Dim firstRange As Word.Range = Me.Paragraphs(1).Range Dim secondRange As Word.Range = Me.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text
Word.Range firstRange = this.Paragraphs[1].Range; Word.Range secondRange = this.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text;
L'esempio di codice seguente può essere utilizzato in un componente aggiuntivo a livello di applicazione. In questo codice viene utilizzato il documento attivo.
Dim document As Word.Document = Me.Application.ActiveDocument Dim firstRange As Word.Range = document.Paragraphs(1).Range Dim secondRange As Word.Range = document.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text
Word.Document document = this.Application.ActiveDocument; Word.Range firstRange = document.Paragraphs[1].Range; Word.Range secondRange = document.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text;
Assegnare la proprietà Text, scambiando il testo tra i due paragrafi.
firstRange.Text = secondString secondRange.Text = firstString
firstRange.Text = secondString; secondRange.Text = firstString;
Selezionare uno per volta tutti gli intervalli e sospendere l'esecuzione del codice per visualizzare i risultati in una finestra di messaggio.
firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text)
firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text);
Modificare firstRange utilizzando il metodo MoveEnd affinché il segno di paragrafo non sia più incluso in firstRange.
firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1)
object charUnit = Word.WdUnits.wdCharacter; object move = -1; // move left 1 firstRange.MoveEnd(ref charUnit, ref move);
Sostituire la parte restante del testo nel primo paragrafo assegnando una nuova stringa alla proprietà Text dell'intervallo.
firstRange.Text = "New content for paragraph 1."
firstRange.Text = "New content for paragraph 1.";
Sostituire il testo in secondRange, incluso il segno di paragrafo.
secondRange.Text = "New content for paragraph 2."
secondRange.Text = "New content for paragraph 2.";
Selezionare firstRange e sospendere l'esecuzione del codice per visualizzare i risultati in una finestra di messaggio, quindi eseguire la stessa operazione con secondRange.
Poiché firstRange è stato ridefinito in modo da escludere il segno di paragrafo, è stata mantenuta la formattazione originale del paragrafo. È stata tuttavia inserita una frase al posto del segno di paragrafo in secondRange, rimuovendo di fatto il paragrafo separato.
firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text)
firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text);
Poiché il contenuto originale di entrambi gli intervalli è stato salvato come stringa, è possibile ripristinare la condizione originale del documento.
Modificare nuovamente firstRange in modo da includere il segno di paragrafo utilizzando il metodo MoveEnd per una posizione di carattere.
firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move);
Eliminare secondRange. In questo modo, il terzo paragrafo verrà ripristinato nella posizione originale.
secondRange.Delete()
secondRange.Delete(ref missing, ref missing);
Ripristinare il testo originale del paragrafo in firstRange.
firstRange.Text = firstString
firstRange.Text = firstString;
Utilizzare il metodo InsertAfter dell'oggetto Range per inserire il contenuto originale del secondo paragrafo dopo firstRange, quindi selezionare firstRange.
firstRange.InsertAfter(secondString) firstRange.Select()
firstRange.InsertAfter(secondString); firstRange.Select();
Esempio di personalizzazione a livello di documento
Per controllare la struttura dei paragrafi durante l'inserimento di testo nelle personalizzazioni a livello di documento
Nell'esempio seguente viene illustrato il metodo completo per una personalizzazione a livello di documento. Per utilizzare questo codice è necessario eseguirlo dalla classe ThisDocument del progetto.
Private Sub ReplaceParagraphText() Dim firstRange As Word.Range = Me.Paragraphs(1).Range Dim secondRange As Word.Range = Me.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text firstRange.Text = secondString secondRange.Text = firstString firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1) firstRange.Text = "New content for paragraph 1." secondRange.Text = "New content for paragraph 2." firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1) secondRange.Delete() firstRange.Text = firstString firstRange.InsertAfter(secondString) firstRange.Select() End Sub
private void ReplaceParagraphText() { Word.Range firstRange = this.Paragraphs[1].Range; Word.Range secondRange = this.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text; firstRange.Text = secondString; secondRange.Text = firstString; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); object charUnit = Word.WdUnits.wdCharacter; object move = -1; // move left 1 firstRange.MoveEnd(ref charUnit, ref move); firstRange.Text = "New content for paragraph 1."; secondRange.Text = "New content for paragraph 2."; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move); secondRange.Delete(ref missing, ref missing); firstRange.Text = firstString; firstRange.InsertAfter(secondString); firstRange.Select(); }
Esempio di componente aggiuntivo a livello di applicazione
Per controllare la struttura dei paragrafi durante l'inserimento di testo in un componente aggiuntivo a livello di applicazione
Nell'esempio seguente viene illustrato il metodo completo per un componente aggiuntivo a livello di applicazione. Per utilizzare il codice, è necessario eseguirlo dalla classe ThisAddIn nel progetto.
Private Sub ReplaceParagraphText() Dim document As Word.Document = Me.Application.ActiveDocument Dim firstRange As Word.Range = document.Paragraphs(1).Range Dim secondRange As Word.Range = document.Paragraphs(2).Range Dim firstString As String = firstRange.Text Dim secondString As String = secondRange.Text firstRange.Text = secondString secondRange.Text = firstString firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=-1) firstRange.Text = "New content for paragraph 1." secondRange.Text = "New content for paragraph 2." firstRange.Select() MessageBox.Show(firstRange.Text) secondRange.Select() MessageBox.Show(secondRange.Text) firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1) secondRange.Delete() firstRange.Text = firstString firstRange.InsertAfter(secondString) firstRange.Select() End Sub
private void ReplaceParagraphText() { Word.Document document = this.Application.ActiveDocument; Word.Range firstRange = document.Paragraphs[1].Range; Word.Range secondRange = document.Paragraphs[2].Range; string firstString = firstRange.Text; string secondString = secondRange.Text; firstRange.Text = secondString; secondRange.Text = firstString; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); object charUnit = Word.WdUnits.wdCharacter; object move = -1; // move left 1 firstRange.MoveEnd(ref charUnit, ref move); firstRange.Text = "New content for paragraph 1."; secondRange.Text = "New content for paragraph 2."; firstRange.Select(); MessageBox.Show(firstRange.Text); secondRange.Select(); MessageBox.Show(secondRange.Text); move = 1; // move right 1 firstRange.MoveEnd(ref charUnit, ref move); secondRange.Delete(ref missing, ref missing); firstRange.Text = firstString; firstRange.InsertAfter(secondString); firstRange.Select(); }
Vedere anche
Attività
Procedura: estendere gli intervalli nei documenti
Procedura: comprimere intervalli o selezioni in documenti
Procedura: inserire testo nei documenti di Word
Procedura: reimpostare gli intervalli nei documenti di Word
Procedura: definire e selezionare intervalli nei documenti