Microsoft Office Online
Iniciar sessão no Meu Office Online (O que é isto?) | Iniciar sessão

 
 
Microsoft Office Access
Procurar
Procurar
 
 
 
 
Aviso: está a visualizar esta página com um browser não suportado. Este Web site funciona melhor com o Microsoft Internet Explorer 6.0 ou posterior, o Firefox 1.5 ou o Netscape Navigator 8.0 ou posterior. Mais informações sobre browsers suportados.

Função GetObject
 

Devolve uma referência a um objecto fornecida por um componente ActiveX.

Sintaxe

GetObject([nomecaminho ] [ , classe ] )

A sintaxe da função GetObject tem os seguintes argumentos (argumento: valor que fornece informações a uma acção, evento, método, propriedade, função ou procedimento.):

Argumento Descrição
nomecaminho Opcional. Variante (Cadeia). O caminho completo e o nome do ficheiro que contém o objecto a obter. Se nomecaminhofor omitido, é necessária a classe.
classe Opcional. Variante (Cadeia). Uma cadeia que representa a classe (classe: definição de um objecto, incluindo o respectivo nome, propriedades, métodos e todos os eventos que esse objecto possua. Quando é criada uma instância de uma classe, é criado um novo objecto com todas as características definidas por essa classe.) do objecto.

O argumento (argumento: valor que fornece informações a uma acção, evento, método, propriedade, função ou procedimento.) classe utiliza a sintaxe nomeaplic.tipodeobjecto e é composto por três partes:

Parte Descrição
nomeaplic Obrigatório. Variante (Cadeia). O nome da aplicação que fornece o objecto.
tipodeobjecto Obrigatório. Variante (Cadeia). O tipo ou classe do objecto a criar.

Observações

 Nota   Os exemplos que se seguem demonstram a utilização desta função num módulo do Visual Basic for Applications (VBA). Para mais informações sobre como trabalhar com VBA, seleccione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de procura.

Utilize a função GetObject para aceder a um objecto ActiveX a partir de um ficheiro e atribuir o objecto a uma variável de objecto (variável de objecto: variável que contém uma referência a um objecto.). Utilize a instrução Set para atribuir o objecto devolvido por GetObject à variável de objecto. Por exemplo:

Dim CADObject As Object
Set CADObject = GetObject("C:\CAD\SCHEMA.CAD")

		

Quando este código é executado, a aplicação associada ao nomecaminho especificado é iniciada e o objecto existente no ficheiro especificado é activado.

Se nomecaminho for uma cadeia de comprimento zero (""), GetObject devolve uma nova instância de objecto do tipo especificado. Se o argumento nomecaminho for omitido, GetObject devolve um objecto activo actualmente do tipo especificado. Se não existir nenhum objecto do tipo especificado, ocorre um erro.

Algumas aplicações permitem-lhe activar parte de um ficheiro. Adicione um ponto de exclamação (!) no final do nome do ficheiro e, de seguida, uma cadeia que identifique a parte do ficheiro que pretende activar. Para obter informações sobre como criar esta cadeia, consulte a documentação para a aplicação que criou o objecto.

Por exemplo, numa aplicaçõ de desenho pode ter diversas camadas num desenho armzenado num ficheiro. É possível utilizar o seguinte código para activar uma camada num desenho chamado SCHEMA.CAD:

Set LayerObject = GetObject("C:\CAD\SCHEMA.CAD!Layer3")

		

Se não especificar a classe do objecto, a Automatização determina o início da aplicação e a activação do objecto, com base no nome do ficheiro fornecido. Alguns ficheiros, no entanto, podem suportar mais do que uma classe de objecto. Por exemplo, um desenho pode suportar três tipos diferentes de objecto: um objecto Aplicação, um objecto Desenho e um objecto Barra de Ferramentas, os quais pertencem todos ao mesmo ficheiro. Para especificar qual o objecto de um ficheiro pretende activar, utilize o argumento classe opcional. Por exemplo:

Dim MyObject As Object
Set MyObject = GetObject("C:\DRAWINGS\SAMPLE.DRW", _
    "FIGMENT.DRAWING")

		

No exemplo, FIGMENT é o nome de uma aplicação de desenho e DRAWING é um dos tipos de objecto que suporta.

Depois de um objecto ser activado, é referenciado no código utilizando a variável de objecto que definiu. No exemplo anterior, acede às prorpiedades (propriedade: um determinado atributo de um controlo, campo ou objecto definido para especificar uma das características do objecto (como o tamanho, cor ou localização no ecrã) ou um aspecto do respectivo comportamento (como se o objecto estivesse oculto).) e aos métodos (método: procedimento semelhante a uma instrução ou função que opera em objectos específicos. Por exemplo, pode aplicar o método Print ao objecto Debug para transferir a impressão para a janela Immediate.) do novo objecto utilizando a variável de objecto MyObject. Por exemplo:

MyObject.Line 9, 90
MyObject.InsertText 9, 100, "Hello, world."
MyObject.SaveAs "C:\DRAWINGS\SAMPLE.DRW"

		

 Nota    Utilize a função GetObject quando existir uma instância actual do objecto se pretender criar o objecto com um ficheiro já carregado. se não existir uma ocorrência actual e não quiser que o objecto seja iniciado com um ficheiro carregado, utilize a função CreateObject.

Se um objecto se tiver registado a si próprio como um objecto de instância única, só é criada uma instância do objecto, independentemente do número de vezes que a função CreateObject é executada. Com um objecto de instância única, a função GetObject devolve sempre a mesma instância quando é chamada com a sintaxe de cadeia de comprimento zero ("") e causa um erro se o argumento nomecaminho for omitido. Não é possível utilizar GetObject para obter uma referência a uma classe criada com o Visual Basic.

Exemplo

Este exemplo utiliza a função GetObject para obter uma referência a uma folha de trabalho específica do Microsoft Office Excel 2007 (MyXL). Utiliza a propriedade Aplicação da folha de trabalho para tornar o Excel visível, fechá-lo, etc. Utilizando duas chamadas API, o procedimento Sub de Sub procedimento DetectarExcel procura o Excel e se este estiver em execução, introduz o Excel na Tabela de Objectos em Execução. A primeira chamada para GetObject causa um erro se o Microsoft Excel não estiver em execução. No exemplo, o erro faz com que o sinalizador ExcelNãoEstáEmExecução seja definido como Verdadeiro. A segunda chamada para GetObject especifica a abertura de um ficheiro. Se o Excel não estiver em execução, a segunda chamada inicia-o e devolve uma referência à folha de trabalho representada pelo ficheiro especificado, mytest.xls. O ficheiro tem de existir na localização especificada; se assim não for, é gerado o erro de Automatização do Visual Basic. Em seguida, o código do exemplo torna visíveis o Excel e a janela que contém a folha de trabalho especificada. Por último, se não existir uma versão antrior do Excel em execução, o código utiliza o método Sair do objecto Aplicação para fechar o Excel. Se a aplicação já estava em execução, não é efectuada nenhuma tentativa para a fechar. A referência propriamente dita é libertada ao ser definida como Nada.

' Declare necessary API routines:
Declare Function FindWindow Lib "user32" Alias _
"FindWindowA" (ByVal lpClassName as String, _
                    ByVal lpWindowName As Long) As Long

Declare Function SendMessage Lib "user32" Alias _
"SendMessageA" (ByVal hWnd as Long,ByVal wMsg as Long, _
                    ByVal wParam as Long, _
                    ByVal lParam As Long) As Long

Sub GetExcel()
    Dim MyXL As Object    ' Variable to hold reference
                                ' to Microsoft Excel.
    Dim ExcelWasNotRunning As Boolean    ' Flag for final release.

' Test to see if there is a copy of Microsoft Excel already running.
    On Error Resume Next    ' Defer error trapping.
' GetObject function called without the first argument returns a 
' reference to an instance of the application. If the application isn't
' running, an error occurs.
    Set MyXL = GetObject(, "Excel.Application")
    If Err.Number <> 0 Then ExcelWasNotRunning = True
    Err.Clear    ' Clear Err object in case error occurred.

' Check for Microsoft Excel. If Microsoft Excel is running,
' enter it into the Running Object table.
    DetectExcel

' Set the object variable to reference the file you want to see.
    Set MyXL = GetObject("c:\vb4\MYTEST.XLS")

' Show Microsoft Excel through its Application property. Then
' show the actual window containing the file using the Windows
' collection of the MyXL object reference.
    MyXL.Application.Visible = True
    MyXL.Parent.Windows(1).Visible = True
     Do manipulations of your  file here.
    ' ...
' If this copy of Microsoft Excel was not running when you
' started, close it using the Application property's Quit method.
' Note that when you try to quit Microsoft Excel, the
' title bar blinks and a message is displayed asking if you
' want to save any loaded files.
    If ExcelWasNotRunning = True Then 
        MyXL.Application.Quit
    End IF

    Set MyXL = Nothing    ' Release reference to the
                                ' application and spreadsheet.
End Sub

Sub DetectExcel()
' Procedure dectects a running Excel and registers it.
    Const WM_USER = 1024
    Dim hWnd As Long
' If Excel is running this API call returns its handle.
    hWnd = FindWindow("XLMAIN", 0)
    If hWnd = 0 Then    ' 0 means Excel not running.
        Exit Sub
    Else                
    ' Excel is running so use the SendMessage API 
    ' function to enter it in the Running Object Table.
        SendMessage hWnd, WM_USER + 18, 0, 0
    End If
End Sub

		

Consulte também
anúncio