none
Ajuda para criar um formulário VB ==> Word RRS feed

  • Pergunta

  • Pessoal,

    Estou parado a um tempo em programação...No entanto, estou precisando criar um formulário com alguns campos de entrada (data, nomes, etc) e que gere um documento (um modelo previamente digitado) no word (2007). Uso sempre este modelo alterando apenas alguns dados...dados estes que gostaria de introduzir num aplicativo windows. Então com VB (que vem no VS 2008 profissional) queria criar através da interação com o word.

    Estou dia e noite vendo exemplos...mas nenhum está dando certo...tentei adaptar um exemplo,que segue abaixo: (dá problema em ObjWord = New Word.Application) mas add referencias (em COM o Microsoft Word 12x Library)....ME AJUDEM POR FAVOR!!! OBRIGADO!!!

    OBS: ou me mandem um exemplo que o resto eu tento desenrolar...Obrigado!

    7 campos --> TextBox             1 Button --> Gerar

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim temp As String

            On Error GoTo trata_erro

            ObjWord = New Word.Application
            ' Desabilita o botao de comando
            cmdContrato.Enabled = False
            ' nome do relatorio pré montado
            ObjWord.Documents.Open("c: esteContrato.doc")

            ' chama rotina para substituicao
            Call Substitui_Var("@contratada", txtcontratada)
            Call Substitui_Var("@sede", txtsede)
            Call Substitui_Var("@cidade1", txtcidade)
            Call Substitui_Var("@contratante", Data1.Recordset("nomeresp"))
            Call Substitui_Var("@endereco2", Data1.Recordset("endereco"))
            Call Substitui_Var("@documento", Data1.Recordset("cidade"))
            Call Substitui_Var("@aluno", Data1.Recordset("nome"))

            ' Salva o documento com um novo nome
            ObjWord.ActiveDocument.SaveAs(txtcontrato)
            'Encerra o word
            ObjWord.Quit()
            ' informa ao usuario que o contrato foi gerado
            MsgBox("Contrato gerado com sucesso! em : " & txtcontrato, vbInformation, " Contrato Gerado ")
            ' libera memoria
            ObjWord = Nothing
            Exit Sub
    trata_erro:
            MsgBox("Ocorreu um erro durante o processamento " & " - Erro numero : " & Err.Number)

        End Sub
        Private Sub Substitui_Var(ByVal Header As String, ByVal Data As String)
            With ObjWord.Selection.Find
                .ClearFormatting()
                .Text = Header
                .Execute(Forward:=True)
            End With
            Clipboard.Clear()
            Clipboard.SetText(Data)
            ObjWord.Selection.Paste()
            Clipboard.Clear()
        End Sub

    End Class

    terça-feira, 19 de abril de 2011 01:28

Respostas

Todas as Respostas

  • Pessoal,

    Estou parado a um tempo em programação...No entanto, estou precisando criar um formulário com alguns campos de entrada (data, nomes, etc) e que gere um documento (um modelo previamente digitado) no word (2007). Uso sempre este modelo alterando apenas alguns dados...dados estes que gostaria de introduzir num aplicativo windows. Então com VB (que vem no VS 2008 profissional) queria criar através da interação com o word.

    Estou dia e noite vendo exemplos...mas nenhum está dando certo...tentei adaptar um exemplo,que segue abaixo: (dá problema em ObjWord = New Word.Application) mas add referencias (em COM o Microsoft Word 12x Library)....ME AJUDEM POR FAVOR!!! OBRIGADO!!!

    OBS: ou me mandem um exemplo que o resto eu tento desenrolar...Obrigado!

    7 campos --> TextBox             1 Button --> Gerar

    Public Class Form1

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim temp As String

            On Error GoTo trata_erro

            ObjWord = New Word.Application
            ' Desabilita o botao de comando
            cmdContrato.Enabled = False
            ' nome do relatorio pré montado
            ObjWord.Documents.Open("c: esteContrato.doc")

            ' chama rotina para substituicao
            Call Substitui_Var("@contratada", txtcontratada)
            Call Substitui_Var("@sede", txtsede)
            Call Substitui_Var("@cidade1", txtcidade)
            Call Substitui_Var("@contratante", Data1.Recordset("nomeresp"))
            Call Substitui_Var("@endereco2", Data1.Recordset("endereco"))
            Call Substitui_Var("@documento", Data1.Recordset("cidade"))
            Call Substitui_Var("@aluno", Data1.Recordset("nome"))

            ' Salva o documento com um novo nome
            ObjWord.ActiveDocument.SaveAs(txtcontrato)
            'Encerra o word
            ObjWord.Quit()
            ' informa ao usuario que o contrato foi gerado
            MsgBox("Contrato gerado com sucesso! em : " & txtcontrato, vbInformation, " Contrato Gerado ")
            ' libera memoria
            ObjWord = Nothing
            Exit Sub
    trata_erro:
            MsgBox("Ocorreu um erro durante o processamento " & " - Erro numero : " & Err.Number)

        End Sub
        Private Sub Substitui_Var(ByVal Header As String, ByVal Data As String)
            With ObjWord.Selection.Find
                .ClearFormatting()
                .Text = Header
                .Execute(Forward:=True)
            End With
            Clipboard.Clear()
            Clipboard.SetText(Data)
            ObjWord.Selection.Paste()
            Clipboard.Clear()
        End Sub

    End Class
    terça-feira, 19 de abril de 2011 01:31
  • Olá amigo!

    Analise também estes artigos, acredito ser a base necessária para a sua necessidade: 

    http://www.linhadecodigo.com.br/Artigo.aspx?id=392

    http://www.codeproject.com/KB/miscctrl/winwordcontrol.aspx

    http://msdn.microsoft.com/en-us/library/aa192495(v=office.11).aspx#wordobject_link2

    São funcionáis.

    att;

     

     


    Eder Costa
    LATAM Forum Support Engineer
    Microsoft Corporation
    forumguys
    segunda-feira, 25 de abril de 2011 14:03
    Moderador