Ir ao conteúdo
  • Cadastre-se

Word Quebra de página no documento Word


Posts recomendados

Bom dia, alguém poderia me ajudar por favor?

 

Estou gerando um documento em Word atráves do VBA excel com textos e imagens, só que precisava que essa imagem fosse salva em outra página e não estou conseguindo fazer...estou usando esse código  "Selection.InsertBreak Type:=wdPageBreak" mas fica dando erro 461.

Por gentileza laguém poderia me auxliar por favor?

Obrigado!!!!

Link para o comentário
Compartilhar em outros sites

@Basole

Private Sub CommandButton1_Click()
Dim Word As Object

Dim documento As Object
Dim selection As Document

Dim oImage As Shape

Set Word = CreateObject("Word.Application")

Word.Visible = True

Set documento = Word.Documents.Add(ThisWorkbook.Path & "\Test.docx")

Dim docativo
Set docativo = documento
docativo.InlineShapes.AddPicture Filename:=nome, LinkToFile:=False, SaveWithDocument:=True

End Sub

 

Link para o comentário
Compartilhar em outros sites

Segue codigo com as alteracoes: 

 

Private Sub CommandButton1_Click()
Dim Word As Object

Dim documento As Object
Dim selection As Document
Dim oImage As Shape

Set Word = CreateObject("Word.Application")

Word.Visible = True

Set documento = Word.Documents.Add(ThisWorkbook.Path & "\Test.docx")

Dim docativo
Set docativo = documento
docativo.InlineShapes.AddPicture Filename:=nome, LinkToFile:=False, SaveWithDocument:=True
Word.selection.InsertBreak Type:=wdPageBreak

End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Jvitorino1007 veja agora apos esses ajustes :

Private Sub CommandButton1_Click()
    Dim Word As Object
    
    Dim documento As Object
    Dim selection As Document
    Dim oImage As Shape
    Dim nxPara As Paragraph
    Dim s As Word.InlineShape
    
    Set Word = CreateObject("Word.Application")
    
    Word.Visible = True
    
    Set documento = Word.Documents.Add(ThisWorkbook.Path & "\Test.docx")
    
    Dim docativo
    Set docativo = documento
    
    With docativo
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set nxPara = .Paragraphs.Last
      nxPara.Range.InsertBreak Type:=wdPageBreak
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
      s.Width = 400
    End With

End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Basole Vou tentar aqui, muito obrigado novamente

adicionado 2 minutos depois
3 minutos atrás, Basole disse:

@Jvitorino1007 veja agora apos esses ajustes :


Private Sub CommandButton1_Click()
    Dim Word As Object
    
    Dim documento As Object
    Dim selection As Document
    Dim oImage As Shape
    Dim nxPara As Paragraph
    Dim s As Word.InlineShape
    
    Set Word = CreateObject("Word.Application")
    
    Word.Visible = True
    
    Set documento = Word.Documents.Add(ThisWorkbook.Path & "\Test.docx")
    
    Dim docativo
    Set docativo = documento
    
    With docativo
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set nxPara = .Paragraphs.Last
      nxPara.Range.InsertBreak Type:=wdPageBreak
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
      s.Width = 400
    End With

End Sub

 

@Basole Amigo obrigado mesmo deu certo aqui nota 10 valeu mesmo

adicionado 9 minutos depois
6 minutos atrás, Jvitorino1007 disse:

@Basole Vou tentar aqui, muito obrigado novamente

adicionado 2 minutos depois

@Basole Amigo obrigado mesmo deu certo aqui nota 10 valeu mesmo

@Basole A última dúvida eu tenho que inserir mais uma imagem desse jeito também...e está pulando 3 páginas se eu quiser diminuir como faço..to quebrando a cabeça nisso e você em 1 minuto faz kkk a última ajuda po gentileza se não for pedir demais

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Jvitorino1007 voce nao especificou, mas suponho que queira inserir outra imagem, na proxima pagina...

  * Altere a variavel nome pela da outra imagem

With docativo
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set nxPara = .Paragraphs.Last
      nxPara.Range.InsertBreak Type:=wdPageBreak
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
      s.Width = 400
      ' Insere outra imagem em outra pagina
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set nxPara = .Paragraphs.Last
      nxPara.Range.InsertBreak Type:=wdPageBreak
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
      s.Width = 400
End With
    

 

Link para o comentário
Compartilhar em outros sites

@Basole Bom dia amigo, vou tentar aqui  muito obrigado novamente.Obrigado mesmo

adicionado 29 minutos depois

@Basole

Private Sub CommandButton1_Click()
Dim Word
Dim documento


Set Word = CreateObject("Word.Application")

Word.Visible = True
Set documento = Word.Documents.Add(ThisWorkbook.Path & "\Test.docx")
Dim docativo
Set docativo = documento


With docativo
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set nxPara = .Paragraphs.Last
      nxPara.Range.InsertBreak Type:=wdPageBreak
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
      s.Width = 400
End With
      
With docativo
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set nxPara = .Paragraphs.Last
      nxPara.Range.InsertBreak Type:=wdPageBreak
      Set s = nxPara.Range.InlineShapes.AddPicture(figura, False, True)
      s.Width = 400
 End With
 
With documento

.FormFields("nome").Range = TextBox1.Value
.FormFields("en").Range = TextBox2.Value
End With

End Sub

Private Sub CommandButton3_Click()

Set foto = Sheets("Plan1").ChartObjects("Gráfico 1").Chart
nome = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
foto.Export Filename:=nome, filtername:="GIF"
Image1.Picture = LoadPicture(nome)

Set foto = Sheets("Plan1").ChartObjects("Gráfico 2").Chart
figura = ThisWorkbook.Path & Application.PathSeparator & "temp.gif"
foto.Export Filename:=nome, filtername:="GIF"
Image2.Picture = LoadPicture(figura)
End Sub

 

 

Esse é o código completo que estou usando, ele carrega as duas imagens no userform mas está exportando somente a figura 2.

Link para o comentário
Compartilhar em outros sites

@Jvitorino1007 segue o ajuste do código de acordo com o cenários dos aquivos enviados: 

 

Private Sub CommandButton1_Click()
Dim Word
Dim documento
Dim nxPara As Paragraph
Dim passo As Integer
         
Set Word = CreateObject("Word.Application")

Word.Visible = True
Set documento = Word.Documents.Add(ThisWorkbook.Path & "\Test1.docx")
Dim docativo
Set docativo = documento

With docativo
        .Range.Paragraphs.Last.Range.InsertParagraphAfter
         Set nxPara = .Paragraphs.Last
         nxPara.Alignment = wdAlignParagraphCenter
         nxPara.Range.Text = "Curva de seletividade de fase"
         .Range.Paragraphs.Last.Range.InsertParagraphAfter
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
       
       s.Width = 400  '**** LARGURA DA IMAGEM 1
       s.Height = 200 '**** ALTURA DA IMAGEM 1
      
    For passo = 1 To 5
         ' **** Define os espacos entre as imagens (5 paragrafos abaixo)
      .Range.Paragraphs.Last.Range.InsertParagraphAfter
    Next passo
    
      Set nxPara = .Paragraphs.Last
         nxPara.Range.Text = "Curva se sletiviadade de neutro"
         .Range.Paragraphs.Last.Range.InsertParagraphAfter
    
      Set s = nxPara.Range.InlineShapes.AddPicture(nome, False, True)
      
       s.Width = 400    '**** LARGURA DA IMAGEM 2
       s.Height = 200   '*****ALTURA DA IMAGEM 2
      
 End With
 
With documento

.FormFields("nome").Range = TextBox1.Value
.FormFields("en").Range = TextBox2.Value

End With

End Sub

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

@Basole @Basole amigo show de bola cara, nem sei como te agradecer por essas ajudas, esse trabalho é o meu projeto de estágio...ficou 10 com sua ajuda valeu mesmo. Muito obrigado mesmo pela ajuda, acredito que novas dúvidas viram e se puder continuar me dando esse auxilio eu agradeço de coração.

adicionado 18 minutos depois

@Basole Como eu disse, estou tentando colocar em negrito e uma letra maior no "Curva de seletividade de fase e de neutro" mas esta dando erro.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@Basole Bom dia amigo, funcionou perfeitamente, muito obrigado novamente.

Eu tenho 5 checkbox individuais onde cada um possui 6 campos que são preenchidos com valores e esses valores vão para o word, eu usei esse código:

If ComboBox1.Value <> "" Then
.FormFields("proteção").Range = TextBox55.text
.FormFields("curva").Range = ComboBox1.text
.FormFields("itemp").Range = TextBox7.text
.FormFields("ipk").Range = TextBox8.text
.FormFields("instant").Range = TextBox9.text
.FormFields("tinstant").Range = TextBox10.text
Else

End If

If ComboBox2.Value <> "" Then
.FormFields("proteção").Range = TextBox56.text
.FormFields("curva").Range = ComboBox2.text
.FormFields("itemp").Range = TextBox11.text
.FormFields("ipk").Range = TextBox12.text
.FormFields("instant").Range = TextBox13.text
.FormFields("tinstant").Range = TextBox14.text
 Else
End If

No caso se o comboxbox1 estiver com qualquer valor ele vai mandar os dados para o word e assim com o combobox 2. Mas está dando erro quando tenho informações no combo 1 e 2, não sei qual condição colocar para pegar apenas os valores do combo 1 mesmo que o combo 2, 3, 4 e 5 estiverem preenchidos também e isso para os demais.

Poderia me dar mais uma força por gentileza? Esse trabalho é um projeto de estágio e o meu TCC.

 

Link para o comentário
Compartilhar em outros sites

@Jvitorino1007 bom nao sei como esta toda a rotina, mas voce pode colocar a instrucao de saida Exit Sub, se

atender a respectiva condicão.

 

Exemplo: 

 

If ComboBox1.Value <> "" Then

        .FormFields("proteção").Range = TextBox55.Text
        .FormFields("curva").Range = ComboBox1.Text
        .FormFields("itemp").Range = TextBox7.Text
        .FormFields("ipk").Range = TextBox8.Text
        .FormFields("instant").Range = TextBox9.Text
        .FormFields("tinstant").Range = TextBox10.Text
         Exit Sub

End If

 

Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois...

@Basole Muito obrigado pela ajuda. Não sei se é possível realizar está tarefa, cada documento gerado possui um nome diferente, e eles são salvos na mesma pasta. No caso precisava enviar esses documentos gerados por e-mail, mas não sei como posso escolher de forma automática, exemplo:

gerou documento 1vai pegar somente o documento 1 para enviar por e-mail usando o outlook, se gerar o documento 2 vai pegar somente 2 e enviar, etc.

Teria como ajudar por gentileza? Consigo só gerar um por vez mais de forma manual e não automática. 

 

Sub MandaEmail()
    
    Dim EnviarPara As String
    Dim Mensagem As String
 
    For i = 1 To 4
        EnviarPara = ThisWorkbook.Sheets(1).Cells(i, 1)
        If EnviarPara <> "" Then
            Mensagem = ThisWorkbook.Sheets(1).Cells(i, 3)
            Envia_Emails EnviarPara, Mensagem
        End If
    Next i
End Sub
Sub Envia_Emails(EnviarPara As String, Mensagem As String)
    Dim OutlookApp As Object
    Dim OutlookMail As Object
    Dim xname As String
    
 
    Set OutlookApp = CreateObject("Outlook.Application")
    Set OutlookMail = OutlookApp.CreateItem(0)
 
    With OutlookMail
        .To = "[email protected]"
        .CC = ""
        .BCC = ""
        .Subject = "Pedido enviado"
        .Body = "Mensagem teste"
        .Display ' para envia o email diretamente defina o código  .Send
        .Attachments.Add ("C:\Users\jvitorino\Desktop\Trabalho Emerson\Cartas Geradas\CARTA_DE_PRÉ_APROVAÇÃO - Birigui 2 Guarani.docx")
    End With
 
    Set OutlookMail = Nothing
    Set OutlookApp = Nothing
End Sub

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...