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.)
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.IOA 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.ShowDialog()
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.ClickTry aplication.Visible = True aplication.Activate() documentoWord =
aplication.Documents.Add AddHandler t.Tick, AddressOf DigitarNoWord
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)
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 Ifaplication.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: