Compartilhar via


Como excluir marcas de parágrafo ao criar intervalos programaticamente

Sempre que você cria um objeto de Range baseado em um parágrafo, todos os caracteres de não impressão, como marcas de parágrafo, são incluídos no intervalo.Convém inserir texto de um parágrafo fonte em um parágrafo de destino.Se você não desejar dividir o parágrafo de destino em parágrafos separados, então você deve primeiro remova a marca de parágrafo de parágrafo de origem.Além de isso, desde que as informações de formatação de parágrafo é armazenada na marca de parágrafo, você não pode desejar incluir isso quando você insere o intervalo em um parágrafo existente.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

O seguinte procedimento de exemplo declara duas variáveis de cadeia de caracteres, recupera o conteúdo do primeiro e segundo parágrafos no documento ativo, e troca em seu conteúdo.O exemplo demonstra então remova o marcador de parágrafo de intervalo usando o método de MoveEnd e inserir o texto dentro de parágrafo.

Para controlar a estrutura de parágrafo para inserir texto

  1. Crie duas variáveis de intervalo para o primeiro e segundo parágrafos, e recuperar seu conteúdo usando a propriedade de Text .

    O exemplo de código pode ser usado em uma personalização da nível.

    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; 
    

    O exemplo de código pode ser usado em um suplemento ao aplicativo.Esse código usa o documento ativo.

    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;
    
  2. atribuir a propriedade de Text , alternando o texto entre os dois parágrafos.

    firstRange.Text = secondString
    secondRange.Text = firstString
    
    firstRange.Text = secondString; 
    secondRange.Text = firstString; 
    
  3. Selecione cada intervalo por sua vez e pausar para exibir os resultados em uma caixa de mensagem.

    firstRange.Select()
    MessageBox.Show(firstRange.Text)
    secondRange.Select()
    MessageBox.Show(secondRange.Text)
    
    firstRange.Select(); 
    MessageBox.Show(firstRange.Text); 
    secondRange.Select(); 
    MessageBox.Show(secondRange.Text); 
    
  4. Ajuste firstRange usando o método de MoveEnd de modo que o marcador de parágrafo é não uma parte de 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);
    
  5. Substitua o restante do texto no primeiro parágrafo, atribuindo uma nova cadeia de caracteres para a propriedade de Text do intervalo.

    firstRange.Text = "New content for paragraph 1."
    
    firstRange.Text = "New content for paragraph 1.";
    
  6. Substitua o texto em secondRange, incluindo a marca de parágrafo.

    secondRange.Text = "New content for paragraph 2."
    
    secondRange.Text = "New content for paragraph 2.";
    
  7. Selecione firstRange pausar e exibir os resultados em uma caixa de mensagem, faça o mesmo com secondRange.

    Desde que firstRange foi redefinido para excluir a marca de parágrafo, a formatação original de parágrafo é preservada.Em o entanto, uma frase foi inserida na marca de parágrafo em secondRange, removendo o parágrafo separado.

    firstRange.Select()
    MessageBox.Show(firstRange.Text)
    secondRange.Select()
    MessageBox.Show(secondRange.Text)
    
    firstRange.Select(); 
    MessageBox.Show(firstRange.Text); 
    secondRange.Select(); 
    MessageBox.Show(secondRange.Text); 
    

    O conteúdo originais de ambos os intervalos foram salvos como cadeias de caracteres, para que você possa restaurar o documento a sua condição original.

  8. Reajuste firstRange para incluir a marca de parágrafo usando o método de MoveEnd para uma posição do caractere.

    firstRange.MoveEnd(Unit:=Word.WdUnits.wdCharacter, Count:=1)
    
    move = 1;  // move right 1
    firstRange.MoveEnd(ref charUnit, ref move); 
    
  9. excluir secondRange.Isso restaura o parágrafo três para sua posição original.

    secondRange.Delete()
    
    secondRange.Delete(ref missing, ref missing); 
    
  10. Restaurar o texto original de parágrafo em firstRange.

    firstRange.Text = firstString
    
    firstRange.Text = firstString; 
    
  11. Use o método de InsertAfter do objeto de Range para inserir o conteúdo original de parágrafo - dois após firstRange, selecione firstRange.

    firstRange.InsertAfter(secondString)
    firstRange.Select()
    
    firstRange.InsertAfter(secondString); 
    firstRange.Select(); 
    

Exemplo da Nível de personalização

Para controlar o parágrafo estrutura para inserir texto em um documento personalizações de nível

  • O exemplo a seguir mostra o método para uma completa personalização da nível.Para usar este código, ele execução da classe de ThisDocument em seu projeto.

    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(); 
    }
    

Exemplo do suplemento ao Nível

Para controlar o parágrafo estrutura para inserir texto em um suplemento ao nível

  • O exemplo a seguir mostra o método completa para um suplemento ao aplicativo.Para usar este código, ele execução da classe de ThisAddIn em seu projeto.

    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();
    }
    

Consulte também

Tarefas

Como estender intervalos em documentos programaticamente

Como recolher intervalos ou seleções em documentos programaticamente

Como inserir texto em documentos do Word programaticamente

Como redefinir intervalos em documentos do Word programaticamente

Como definir e selecionar intervalos em documentos programaticamente

Conceitos

Parâmetros opcionais em soluções do Office