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

Form para preencher campos do Word


Fabio Barra

Pergunta

Olá Pessoal! Poderiam me ajudar?

Estou tentando fazer um contrato onde tenho um texto padrão e alguns campos que serão alterados, tipo nome, endereço etc... O que quero é um modelo que abra um form onde digito os dados variáveis do contrato (nome contratante, nome contartada, endereço, etc) e depois de um "OK" na tela, os dados sejam preenchidos no contrato e geraria um docx. Uso o Word 2010.

ALGUÉM PODE ME AJUDAR???

Teriam algum exemplo pronto???

MUITO, MUITO obrigado!

Fábio

Fabio Barra

Editado por quintelab
Removido (HELP!) do título
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

no word 2010 eu não sei, mas nas versoes anteriores do word, eu fazia o seguinte. eu fazia um .doc de modelo do formulario, e os textos q eu quisesse q fosse mudado a cada vez, eu deixava um parametro entre []. exemplo, no lugar onde vai o nome do cara, eu dexava escrito [nome]. depois eu abria o doc dentro do visual basic, editava via codigo e salvava uma copia.

so não sei se o codigo q uso funcionaria no .docx.

mas eu fazia o seguinte. eu declarava essa funcao pra fazer o replace do texto:

Private Sub WReplace(wo, t1 As String, t2 As String)
    wo.Application.Selection.Find.ClearFormatting
    wo.Application.Selection.Find.Replacement.ClearFormatting
    With wo.Application.Selection.Find
        .Text = t1
        .Replacement.Text = t2
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchByte = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = False
        .MatchFuzzy = False
    End With
    wo.Application.Selection.Find.Execute
    With wo.Application.Selection
        If .Find.Forward = True Then
            .Collapse Direction:=wdCollapseStart
        Else
            .Collapse Direction:=wdCollapseEnd
        End If
        .Find.Execute Replace:=wdReplaceOne
        If .Find.Forward = True Then
            .Collapse Direction:=wdCollapseEnd
        Else
            .Collapse Direction:=wdCollapseStart
        End If
        .Find.Execute
    End With
End Sub[/code] ai o codigo pra editar o .doc seria esse. é so você chamar o WReplace pra cada parametro q quiser substituir:
[code]Set wo = CreateObject("Word.Document")

wo.Application.Documents.Open App.Path & "\modelo.doc"

WReplace wo, "[data]", Day(Date) & " de " & MonthName(Month(Date)) & " de " & Year(Date)
WReplace wo, "[nome]", nome_do_cara
WReplace wo, "[parametro]", valor
WReplace wo, "[etc]", etc

wo.Application.Documents(1).SaveAs FileName:=App.Path & "\contrato_preenchido.doc", FileFormat:=wdFormatDocument, _
    LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
    :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
    SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
    False

wo.Application.Documents.Close False

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado Kuroi!

Acho que isso já resolve o meu problema!

Sem querer abusar da boa vontade do pessoal, seria possível eu enviar via e-mail este novo documento gerado pelo código? Via sistema direto? Ou já abrir o Outlook com o arquivo anexado? Alguém poderia me ajudar sobre isto?

Na verdade seriam mais 3 dúvidas:

1) Consigo via sistema abrir o outlook com o arquivo gerado anexado, pronto para enviar um novo e-mail com um texto padrão.

2) Caso 1) não seja possível, como faço isso diretamente via sistema? Ou seja, enviar um e-mail com o .doc anexo diretamente via sistema.

3) Como gero um PDF deste contrato diretamente do sistema ao invez de um .doc??

Mais uma vez OBRIGADO KUROI...

Aos outros, se puderem me ajudar nestas novas dúvidas...

Grande abraço a todos!

Fabio

Link para o comentário
Compartilhar em outros sites

  • 0
1) Consigo via sistema abrir o outlook com o arquivo gerado anexado, pronto para enviar um novo e-mail com um texto padrão.

consegue sim, você pode usar o componente mapi pra isso: http://www.macoratti.net/email_vb.htm

acho q tb tem a ocx do outlook q você pode usar pra interagir com ele, mas o mapi deve servir.

2) Caso 1) não seja possível, como faço isso diretamente via sistema? Ou seja, enviar um e-mail com o .doc anexo diretamente via sistema.

1) é possivel, mas a 2) tb é. você pode usar o componete py.sendmail pra isso: http://www.graymalkinsoftware.net/gspagina...age=Py.Sendmail

3) Como gero um PDF deste contrato diretamente do sistema ao invez de um .doc??

pra criar um pdf direto pelo vb6 so se tiver alguma ocx q faca isso, mas desconheco. você pode buscar alguma coisa no google, mas não sei se sera facil encontrar alguma gratis.

mais você pode usar alguma impressora virtual pra pdf. funciona como uma impressora comum nos demais aplicativos, mas em vez de imprimir na impressora, ele cria um arquivo .pdf e imprime dentro dele.

eu uso o dopdf aqui q é gratis e funciona bem, procura no google.

so q ai o q acontece é q primero você tem q criar o .doc e depois mandar imprimir, ou então usa o objeto Printer.

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,2k
    • Posts
      652k
×
×
  • Criar Novo...