VB .NET -  Criando um Documento no Word (revisão)

 Neste artigo vamos recordar como criar um documento no Microsoft Word usando a linguagem VB .NET e o Visual Studio.

 

Embora os tempos glória do Microsoft Word tenham passado ele ainda é um dos mais populares editores de texto usados até o momento.
 

 

Então se você possuir o Microsoft Word instalado e o Visual Studio pode gerar um documento Word através de um projeto Windows Forms usando a linguagem VB .NET.

 

Caso você ainda não saiba o Visual Studio permite criar projetos usando templates prontos para todas as ferramentas Office tanto para versão 2007 como para a versão 2010. Assim podemos criar documentos , Add-ins e templates para o Word, Excel, PowerPoint :

 

 

Abaixo vemos uma figura que mostra um documento Word 2007 criado em um projeto no Visual Studio 2010.

 

Aliado a este fato as aplicações Office possuem a linguagem VBA - Visual Basic for Applications que permite aos usuários mais avançados personalizar e automatizar diversas tarefas flexibilizando ainda mais as aplicações Office. (A criação de macros também pode ser usada para personalizar aplicações Office).

Os desenvolvedores de aplicações que usam a plataforma .NET podem também efetuar a integração com as aplicações Office usando a linguagem VBA e os objetos da aplicação Office de origem. Isso sempre foi possível desde a versões mais antigas do Visual Basic e se você consultar a seção VBA do site vai encontrar alguns exemplos de aplicações criadas com o Visual Basic que interagem com aplicativos Office.

Além disso temos o  Visual Studio Tools for Office (VSTO), que se apresenta como uma ferramenta através da qual você vai poder desenvolver aplicações para o Office usando o Visual Studio e qualquer uma das linguagens que a plataforma suporta; dessa forma você poderá usar a plataforma .NET e a linguagem Visual Basic para criar aplicações Office sem a necessidade de usar o bom e velho VBA.

Com isso você vai poder criar aplicações dos tipos suportados pela plataforma .NET e usando as linguagens VB .NET e C#  e os recursos do Visual Studio como LINQ, WPF, WCF, suporte ao ClickOnce, enfim, todos os recursos da .NET Framework 3.5 com código gerenciado, ou seja o VSTO pretende unir o útil (Visual Studio) ao agradável(a interface Office).

Obs: Naturalmente o desenvolvedor da plataforma .NET e do VSTO vai ter que conhecer o modelo de objetos do Office para desenvolver aplicações para essa plataforma e integrar as características das mesmas a sua solução .NET.

Apenas para você perceber as vantagens em usar o VSTO sobre o VBA veja abaixo uma comparação entre as duas ferramentas:

VBA - Visual Basic for Applications VSTO
Usa o código que é conectado a  um documento específico. Usa o código que é armazenado separadamente do documento (para personalizações em nível de documento), ou em um assembly que é carregado pelo aplicativo (para o nível de aplicativo Add-ins).
Funciona com os modelos de objeto do Office e as APIs do  VBA Funciona com os modelos de objeto do Office e as APIs do  .NET Framework.
Projetado para gravação de macro e uma experiência de desenvolvedor simplificada. Desenvolvido para segurança, manutenção do código mais fácil e a capacidade de usar o ambiente de desenvolvimento integrado completo do Visual Studio (IDE).
Funciona bem para soluções que se beneficiam de uma forte integração com aplicativos do Office (IDE, menus, botões da barra de ferramentas e assim por diante). Funciona bem para soluções que se beneficiam dos recursos completos do Visual Studio e o .NET Framework.

Nem tudo são flores no mundo VSTO : Se você for um desenvolvedor Office terá que adquirir a licença para o VSTO o que implica num custo a mais e o processo de deploy de uma solução VSTO é mais complexo que a feito pelo VBA.

Para desenvolver soluções VSTO , você deve instalar as Ferramentas do Visual Studio para o Office, que é instalado por padrão com várias versões do Visual Studio.

Mas nesse artigo eu não vou tratar o VSTO, vou mostrar como podemos criar um simples documento Word através de um projeto Windows Forms usando a linguagem VB .NET e os assemblies Microsoft.Office.Interop.Word, Microsoft.Office.Core e Microsoft.Vbe.Interop.

Recursos usados

Criando o projeto Windows Forms

 

Abra o Visual Studio 2010 e clique em New Project;

 

Selecione a linguagem VB .NET, o template Windows Forms Application, informe o nome VBNET_DocumentoWord e clique em OK;

 

 

No formulário Form1.vb inclua os seguintes controles:

Disponha os controles conforme o leiaute da figura abaixo:

 

 

Agora vamos incluir as seguintes referências no projeto:

Clique no menu Project e a seguir em Add Reference;

 

Na guia .NET selecione os namespaces conforme indica a figura abaixo:

 

 

Repita o procedimento acima e na guia COM selecione o namespace conforme indica a figura a seguir:

 

 

A seguir defina a seguinte variável no início do formulário form1.vb:

Dim linhas() As String

No evento Click do botão de comando - Gerar Documento Word - inclua o código abaixo :

 

  Private Sub BtnGerar_Click(sender As System.Object, e As System.EventArgs) Handles BtnGerar.Click
        linhas = Split(txtTexto.Text, vbCrLf)
        GeraDocumentoWord()
    End Sub

O código acima extrai cada linha do controle TextBox - txtTexto - e cria um array de strings contenho as linhas.

A rotina GeraDocumentoWord() é chamada em seguida para gerar o documento no Microsoft Word.

Abaixo temos o código desta rotina:

 Private Sub GeraDocumentoWord()

        Dim tituloWord As String = txtTitulo.Text

        Dim wordApplication As Microsoft.Office.Interop.Word.Application

        wordApplication = New Microsoft.Office.Interop.Word.Application

        'cria um novo domento Workd
        Dim fileName As Object = "normal.dot"    ' template normal
        Dim newTemplate As Object = False
        Dim docType As Object = 0
        Dim isVisible As Object = True
        ' Cria um novo Documento  chamando a função Add na coleção de documentos
        Dim aDoc As Microsoft.Office.Interop.Word.Document = wordApplication.Documents.Add(fileName, newTemplate, docType, isVisible)
        ' torna o documento visivel
        wordApplication.Visible = True
        aDoc.Activate()
        'Inclui conteudo
        wordApplication.Selection.Font.Size = 14
        wordApplication.Selection.Font.Bold = True
        wordApplication.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineThick

        wordApplication.Selection.TypeParagraph()
        wordApplication.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter
        wordApplication.Selection.TypeText(tituloWord)

        wordApplication.Selection.TypeText(vbNewLine)
        wordApplication.Selection.TypeText(vbNewLine)

        wordApplication.Selection.Font.Size = 12
        wordApplication.Selection.Font.Bold = False
        wordApplication.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone
        wordApplication.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphRight
        wordApplication.Selection.TypeText("" & Now.ToShortDateString & vbNewLine & vbNewLine)

        wordApplication.Selection.Font.Size = 12
        wordApplication.Selection.Font.Bold = False
        wordApplication.Selection.Font.Underline = Microsoft.Office.Interop.Word.WdUnderline.wdUnderlineNone
        wordApplication.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphJustify

        wordApplication.Selection.TypeText(vbNewLine)

        'percorre o array de linhas e monta o documento
        For Each linha As String In linhas
            If String.IsNullOrEmpty(linha) Then
                wordApplication.Selection.TypeText(vbNewLine)
            Else
                wordApplication.Selection.TypeText(linha)
            End If
        Next

    End Sub

Executando o projeto e clicando no botão para gerar o documento iremos obter:

Você pode parametrizar ainda mais a geração do documento Word permitindo que o usuário escolha o tipo de fonte, o tamanho, o alinhamento, etc.

Pegue o projeto completo aqui :  VBNET_DocumentoWord.zip

João 6:37 Todo o que o Pai me dá virá a mim; e o que vem a mim de maneira nenhuma o lançarei fora.

João 6:38 Porque eu desci do céu, não para fazer a minha vontade, mas a vontade daquele que me enviou.

João 6:39 E a vontade do que me enviou é esta: Que eu não perca nenhum de todos aqueles que me deu, mas que eu o ressuscite no último dia.


 

Referências:


José Carlos Macoratti