VB.NET - Digitação Automática no Word


Que tal abrir um arquivo texto no VB.NET e fazer a digitação automática deste arquivo no Word ?

Podemos facilmente ativar o aplicativo Word a partir do VB.NET como fazíamos no VB.  Só para lembrar , abaixo dou a relação dos artigos sobre VBA e automação OLE no site: (recordar é viver...)

. Vamos lá...

Inicie um novo projeto no Visual Studio.NET com as seguintes características (sinta-se a vontade para alterar a seu gosto.)

  1. Project Types : Visual Basic Projects
  2. Templates : Windows Application
  3. Name : Digitacao automatica no word
  4. Location : c:\vbnet\digitacao automatica no word

No VB.NET você vai precisar referenciar a biblioteca Microsoft Word Object Library. Clique em Project| Add References e na janela Add Reference clique na guia COM selecionando o componente Microsof Word 10.0 Object Library , conforme abaixo:

No formulário padrão - form1.vb - você vai incluir os seguintes componentes:

O menu do formulário deverá ter duas opções : Arquivo e Ajuda. Veja a figura abaixo:

Como vamos abrir arquivos texto usando o StreamReader você terá que utilizar o namespace System.Io através da declaração Imports abaixo:

Imports System.IO

A seguir defina as variáveis que serão usadas no projeto :

Dim mensagem As String = ""

Dim i As Integer

Dim t As New Timer()

Dim aplication As New Word.Application()

Dim documentoWord As New Word.Document()

Agora no evento Click do MenuItem da opção Abrir inclua o código abaixo , ele faz o seguinte:

- Abre uma janela de diálogo - Abrir Arquivos - exibindo os arquivos texto (.txt)
- Ao selecionar um arquivo ele será aberto e exibido no controle - RichtTextBox1

Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click


OpenFileDialog1.Filter = "Arquivos txt|*.TXT"

OpenFileDialog1.ShowDialog()


Try

   If File.Exists(OpenFileDialog1.FileName) Then

      Dim o As StreamReader = File.OpenText(OpenFileDialog1.FileName)

      RichTextBox1.Text = o.ReadToEnd()

   End If

      RichTextBox1.SelectionStart = 0

      RichTextBox1.SelectionLength = 0

Catch ex As Exception

   MsgBox("Ocorreu um erro na abertura do arquivo.", MsgBoxStyle.Critical)

   End     

End Try

End Sub

 

No evento Click do MenuItem - Digitar no Word - inclua o código abaixo. Ele instancia um objeto do tipo Word com o qual iremos trabalhar.

Estou definindo um evento na classe Timer que a cada 1 segundo irá enviar um caractere do texto aberto para o documento do Word através da rotina DigitarNoWord.

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click

 

Try

   aplication.Visible = True

   aplication.Activate()

   documentoWord = aplication.Documents.Add
 

   AddHandler t.Tick, AddressOf DigitarNoWord


   t.Interval = 100

   t.Start()

    i = 0

Catch excep As Exception

    MsgBox("Ocorreu o seguinte erro: " & excep.Message, MsgBoxStyle.Critical, "Word")

    Exit Sub

End Try

End Sub

O código da rotina DigitarNoWord é dado abaixo:

Private Sub DigitarNoWord(ByVal sender As Object, ByVal e As System.EventArgs)


mensagem = RichTextBox1.Text


 If
  i = mensagem.Length
Then

   t.Stop()

   aplication.Visible = False

   MessageBox.Show("O texto foi digitado com sucesso.", "Word", MessageBoxButtons.OK)

   aplication.ChangeFileOpenDirectory("C:\teste\")

   aplication.ActiveDocument.SaveAs(FileName:="teste_Digitação_Word" & i & ".doc")

   Exit Sub

 End If

  aplication.Selection.TypeText(mensagem.Chars(i))

  i += 1

End Sub

Esta rotina verifica se a quantidade de caracteres 'digitados' é do igual aos da mensagem (tamanho da mensagem) ; quando isto ocorre o timer é encerrado e o texto no Word é salvo.

Eu sei , é apenas VB .NET , mas eu gosto ...

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti