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
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;
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;
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);
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);
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.";
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.";
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.
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);
excluir secondRange.Isso restaura o parágrafo três para sua posição original.
secondRange.Delete()
secondRange.Delete(ref missing, ref missing);
Restaurar o texto original de parágrafo em firstRange.
firstRange.Text = firstString
firstRange.Text = firstString;
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