terça-feira, 7 de agosto de 2007

Automação - Excel

[]
É comum encontrarmos problemas com referência em automação com aplicativos Office, quando referenciamos uma biblioteca, por exemplo XP e temos instalada a versão 2003, então certamente ocorrerá um erro, de biblioteca ausente na referência.

Para evitar o erro, crie uma classe que faça este trabalho setando um objeto, sem usar a referência.

Em um novo módulo Classe cole o código abaixo e salve com o nome de "ExcelReporter"

=======================================================================

Option Explicit
Option Compare Database

Public Function
OpenWorkbook(FileName As String) As Object

On Error GoTo OpenWorkbook_Err

Dim ExcelApp As Object
Set ExcelApp = CreateObject("Excel.Application")
ExcelApp.Visible = False

'Abre o arquivo no Excel
Dim wb As Object
Set
wb = ExcelApp.Workbooks.Open(FileName)

Set OpenWorkbook = wb

Exit Function

OpenWorkbook_Err:
Err.Raise vbObjectError + 100, _
"Project1.ExcelReporter.OpenWorkbook", _
"ExcelReporter component failure"

End Function



Public Sub CloseWorkbook(wb As Object)

On Error GoTo CloseWorkbook_Err

Dim app As Object
Set app = wb.Application
app.DisplayAlerts =
False

wb.Save
wb.Close
app.Quit


Exit Sub

CloseWorkbook_Err:
Err.Raise vbObjectError + 100, _ "Project1.ExcelReporter.CloseWorkbook", _
"ExcelReporter component failure"
Resume Next

End Sub

Para utilizar a Classe

Dim ex As ExcelReporter
Set ex = New ExcelReporter

Dim File AS String
File = "C:\Planilha.XLS"

'Para abrir
Dim wb As Object
Set wb = ex.OpenWorkbook(strFile)

Para Fechar

ex.CloseWorkbook wb

Pronto.... A forma mais facil de referenciar um objeto no Excel.
Espero que gostem