Ir para conteúdo
Fórum Script Brasil
  • 0

Criação de novos botões para abertura de Word


buscheric

Pergunta

Olá, pessoal.

Estou com uma planilha do Excel, em que tenho um botão que eu clico, e ele gera um modelo de laudo para mim, em formato de Word. E quando ele faz isso, já puxa todos os dados que estão no Excel e coloca nesse arquivo.doc.

Porém, devido ao pedido de um cliente, preciso trabalhar com um novo modelo de laudo e, portanto, terei que ter MAIS DE UM BOTÃO na planilha, sendo um para cada tipo de laudo.

Gostaria de saber se conseguem me ajudar no passo a passo de como fazer esse novo botão e como criar uma nova programação no VBA para incluir esse novo modelo de laudo.

 

Anexo envio a foto do Excel e a programação VBA

 

Obrigado

 

Option Explicit
Const modeloUS = "C:\Anima\Modelo Laudos\Laudo Abdominal.dotx"
Const pastaLaudos = "C:\Anima\Laudos\Cabeçalhos Prontos\"
Dim wdApp As Word.Application
Private Sub btnGerarLaudo_Clique()
  Dim wdDoc As Word.Document, rgFoco As Excel.Range, rgTbl As Excel.Range, nomeArq As String
  Set rgTbl = Range("A1").CurrentRegion.Offset(1, 0)
    Set rgTbl = rgTbl.Resize(rgTbl.Rows.Count - 1)
  Set rgFoco = Intersect(rgTbl, ActiveCell.EntireRow)
  If Not rgFoco Is Nothing Then
    rgFoco.Select
    On Error Resume Next
      Set wdApp = GetObject(, "Word.Application")
      If wdApp Is Nothing Then Set wdApp = New Word.Application
    On Error GoTo 0
    wdApp.Visible = True
    Set wdDoc = wdApp.Documents.Add(Template:=modeloUS, DocumentType:=wdNewBlankDocument, Visible:=True)
    With wdDoc.Bookmarks
      .Item("bkmLaudo").Range.Text = rgFoco.Columns("B").Value
      .Item("bkmData").Range.Text = rgFoco.Columns("G").Value
      .Item("bkmNome").Range.Text = rgFoco.Columns("I").Value
      .Item("bkmEspécie").Range.Text = rgFoco.Columns("J").Value
      .Item("bkmRaça").Range.Text = rgFoco.Columns("L").Value
      .Item("bkmSexo").Range.Text = rgFoco.Columns("M").Value
      .Item("bkmIdade").Range.Text = rgFoco.Columns("O").Value
      .Item("bkmTutor").Range.Text = rgFoco.Columns("P").Value
      .Item("bkmVeterinário").Range.Text = rgFoco.Columns("Q").Value
      .Item("bkmClínica").Range.Text = rgFoco.Columns("R").Value
      .Item("bkmCidade").Range.Text = rgFoco.Columns("X").Value
      .Item("bkmDia").Range.Text = rgFoco.Columns("AB").Value
      .Item("bkmMes").Range.Text = rgFoco.Columns("AD").Value
      .Item("bkmAno").Range.Text = rgFoco.Columns("AE").Value
    End With
    nomeArq = Trim(pastaLaudos & Replace(rgFoco.Columns("B").Value, "/24", ""))
    nomeArq = nomeArq & " - " & rgFoco.Columns("I")
    wdDoc.SaveAs2 Filename:=nomeArq, FileFormat:=WdSaveFormat.wdFormatDocumentDefault
  End If
  Set rgFoco = Nothing: Set rgTbl = Nothing
  Set wdDoc = Nothing:  Set wdApp = Nothing
End Sub

1.png

2.png

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde. @buscheric

Deve ser rasuaveklment simples devido já ter um modelo criado.

Você tem o documento novo com os "Bookmarks" , (referências para o VBA fazer a inclusão de dados do excel)?

Caso já tenha feito a primeira coisa que vai fazer é definir a posição do novo modelo:
Const modeloUS = "C:\Anima\Modelo Laudos\Laudo Abdominal.dotx"
Pelo que entendi esse código acima é o modelo atual então vai criar o novo modelo exemplo:
Const modeloUS = "C:\Anima\Modelo Laudos\Laudo Abdominal.dotx"
Const modeloBR = "C:\Anima\Modelo Laudos\Laudo Abdominal2.dotx"

Assim que for respondendo, vamos te ajudando a continuar.

Link para o comentário
Compartilhar em outros sites

  • 0

Oi @Alyson Ronnan Martins, bom dia.

Acabei de criar os modelos que eu preciso, com os "Bookmarks" nos respectivos campos. Demorei um pouco, mas fiz de todos os clientes que eu precisava.

Copiei e colei o código acima, porém tem 02 detalhes:

1. No meio da programação tem um texto: Set wdDoc = wdApp.Documents.Add(Template:=modeloUS

Pelo que eu entendi, ele só vai procurar o modelo "Laudo Abdominal", correto? Como ficaria, então?

2. E com relação ao Botão criado no Excel? Acho que o ideal seria criar um botão para cada cliente? Vai ficar com um monte de botão mesmo, ou tem alguma alternativa? E como eu faria para criar esse botão e ativá-lo?

 

Novamente agradeço a ajuda

Link para o comentário
Compartilhar em outros sites

  • 0

Opa boa noite.
Pelo que eu entendi precisa escolher um modelo dependendo do usuário correto? Se sim você usar esse dado para abrir o modelo que deseja.
Esse seria um exemplo:

If rgFoco.Columns("AF").value = "Laudo novo" Then
	'Define qual constante vai utilizar (novo)
else
	'Defini qual constante vai utilizar (antiga)
end if

Você também pode dublicar a procedure btGerarLaudo_Click e criar ele olhando para a nova constante que aponta para o laudo. Dessa maneira você teria dois botões sendo um para o laudo antigo e outro para o laudo novo.

Link para o comentário
Compartilhar em outros sites

  • 0

@Alyson Ronnan Martins não entendi muito bem sua resposta... Ajuda eu aí, kkkk.

 

Coloquei o link do video que eu gravei da tela. Talvez ajude a entender melhor o que preciso.

Como pode ver no vídeo, já tenho um botão para gerar um laudo padrão. Preciso inserir novos botões, criar a macro para abrir o VBA e fazer a associação correta com cada botão.

Aí, por exemplo: Botão 01 abre o "LaudoAbdominal". Botão 02 abre o "LaudoClienteX". Botão 03 abre o "LaudoGestacional", e assim por diante.

 

https://drive.google.com/file/d/1MR7z4cr9xQMn8_FweZ_AydM6xBv5g08o/view?usp=drive_link

Link para o comentário
Compartilhar em outros sites

  • 0

@buscheric boa tarde, mandei um solicitação.

Quem sabe consigo te auxiliar melhor se você fizer um documento laudo "errado" com dados fictícios para simular e tentar criar algo que funcione. Caso não tenha o arquivo é complicado descrever um código preciso, só posso pensar em uma lógica que possa funcionar.

 

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...