Automação OLE - Integração de Ambientes

Autora: Francine Machado Lima

 

Conceitos OLE - Object Linking and Embedding

Linking: Cria vínculos ou referências aos objetos, armazenando no documento principal apenas os dados realmente necessários.

Embedding: Incorpora os dados dos objetos ao documento principal.

Objeto Vinculado: São dados, informações (objeto) criadas em um arquivo de origem e inseridas em um arquivo de destino. O objeto vinculado não se torna parte do arquivo de destino. Porém, existe um vínculo, uma conexão entre os dois arquivos, de forma que o objeto vinculado no arquivo de destino é automaticamente atualizado quando o arquivo de origem é atualizado.

Objeto Incorporado (Embutido): Ao se criar um objeto incorporado, todos os dados associados a ele estão contidos no próprio objeto OLE. Se o usuário selecionar o objeto embutido, a aplicação fonte será iniciada automaticamente, de forma que se possa alterar diretamente o objeto. Ao incorporar um objeto em uma aplicação nenhuma outra aplicação poderá acessar os dados contidos no objeto. Utilize objetos embutidos quando desejar que apenas sua aplicação mantenha dados que são gerados e editados em outra aplicação.

Cliente e Servidor: Cliente: Aplicação cliente é aquela que solicita os dados; aplicação servidor é aquela que disponibiliza os dados.

Classe: A aplicação que gera os dados do objeto OLE e os tipos de dados que o objeto OLE contém determina a classe do objeto. Selecionando a propriedade Class na tela Properties, você poderá visualizar uma lista de nomes de classes de objetos que sua aplicação suporta.

Aplicação Recipiente: É uma aplicação que recebe e mostra os dados de um objeto OLE. Por exemplo, uma aplicação Visual Basic que usa uma caixa de controle OLE para embutir dados de outra aplicação é uma Aplicação Recipiente.

Objetos OLE

Um objeto OLE se refere a um dado discreto gerado por uma aplicacão. Uma mesma aplicação pode gerar diferentes tipos de objetos. Por exemplo, um banco de dados pode gerar bancos de dados, scripts, consultas ou relatórios como diferentes tipos de objetos. Existem três formas de gerar objetos OLE em Visual Basic:

1- Adicionando o Objeto OLE ao Toolbox (caixa de ferramentas) e colocando o objeto OLE diretamente no seu form (tela). Esta técnica (embedding) embute o objeto OLE dentro da interface da tela da sua aplicação.

2- Utilizando as funções CreateObject ou GetObject para criar o objeto OLE em código. Esta técnica (linking) cria o objeto OLE numa instância ativa da aplicação que gera o objeto OLE.

3- Inserindo ou vinculando o objeto OLE dentro de uma caixa de controle OLE. Esta técnica permite que você modifique os objetos na tela em tempo de execução, crie objetos OLE vinculados e ligue a caixa de controle OLE a um controle de dados.

Automação OLE

Algumas aplicações geram objetos OLE que suportam Automação OLE. Você pode usar o Visual Basic para manipular, via código, os dados destes objetos OLE.

A automação OLE permite que uma aplicação seja controlada por outra aplicação. É através dela que podemos requisitar a outro aplicativo que execute uma determinada tarefa.

Seguem abaixo dois códigos de automação OLE como exemplo:

Automação OLE - Exemplo Visual Basic / Word

1-Inicie o Visual Basic, crie um novo projeto.

2-No formulário, crie um botão de comando com a propriedade Caption definida como AUTOMAÇÃO OLE.

3-Crie um botão de comando com Caption, definida como &Sai e acrescente o seguinte código ao botão:

Private Sub Command1_Click()

End

End Sub

4. Insira o seguinte código ao botão :

 

Ao executar a aplicação e clicar no botão de comando AUTOMAÇÃO OLE, o Word será inicializado, criará um novo arquivo , incluirá o texto AUTOMAÇAO OLE em negrito e com fonte de tamanho 24, mostrando o resultado no visualizador de impressão. Para retornar ao aplicativo, feche o Word.

Observe que o "coração" do sistema está na função CreateObject("Word.Application"), pois é ela que cria efetivamente o objeto WordBasic e inicia o Word.

Automação OLE – Exemplo Visual Basic / Excel

1-Inicie o Visual Basic, crie um novo projeto.

2- No formulário, crie uma label para sinalização da mensagem.

3-Crie um botão de comando e acrescente o seguinte código ao botão:

Private Sub Command3_Click()

Dim dbdados As Database

Dim snp As Recordset

Dim x As Integer

Dim y As Integer

x = 1

'um indicativo para nos guiar

Label2.Caption = "Inicio da operação"

Screen.MousePointer = 11

'este código usa a sintaxe do VBA

Set oleexcel = CreateObject("excel.application.8")

Set oleworkbook = oleexcel.Workbooks.Add

Set oleworksheet = oleexcel.Worksheets.Add

'atenção para o caminho do banco de dados , no seu caso deverá ser diferente

Set dbdados = DBEngine.Workspaces(0).OpenDatabase("e:\vb_tips\nwind2.mdb")

'Como o nome de alguns campos possuem espaços, usamos o colchetes [ ]

Set snp = dbdados.OpenRecordset("SELECT [Número do empregado],[sobrenome],_

[Primeiro nome],[cargo] FROM Empregados", dbOpenSnapshot)

Label2.Caption = "Montando a planilha com dados do arquivo"

DoEvents

Do While Not snp.EOF

For y = 1 To snp.Fields.Count

oleworksheet.Cells(x, y) = snp.Fields(y - 1)

Next y

With oleworksheet.Range("A" & x)

.Value = snp.Fields(0) 'Número do empregado na coluna A1-A15

.Font.Bold = True 'destaca o texto em negrito

End With

x = x + 1

snp.MoveNext

Loop

Label2.Caption = "salvando a planilha..."

DoEvents

'atenção para o path com o diretório para salvar o arquivo

oleworksheet.SaveAs "d:\escola\teste.xls"

snp.Close

Screen.MousePointer = 0

oleexcel.Visible = True

Label2.Caption = "Ok !"

Label2.Caption = ""

'limpando a memória

Set snp = Nothing

Set oleexcel = Nothing

Set oleworkbook = Nothing

Set oleworksheet = Nothing

End Sub

Ao executar a aplicação, será exibido um documento do Excel apresentando os dados do seu banco de dados.

Você pode utilizar também outros aplicativos do windows, como, por exemplo, o Power Point para fazer a integração de ambientes via automação OLE.

Referências

JANONES, R. S. Curso integrando Delphi com Word e Excel. Disponível em: <http://www.ramosdainformatica.com.br/dwe.htm>. Acesso em: 18 abr. 2002.

MACORATTI, J. C. OLE - conceitos básicos. Disponível em: <http://www.geocities.com/SiliconValley/ Bay/3994/ole.htm>.

Acesso em: 17 abr. 2002.

SCHEIDER, R. L. Visual Basic - parte III . Disponível em:

<http://www.dcc.ufrj.br/~schneide/MSI2_962/grupo16/vb4.htm>. Acesso em: 18 abr. 2002