Função GetObject

Nota: Queremos fornecer-lhe os conteúdos de ajuda mais recentes o mais rapidamente possível e no seu idioma. Esta página foi traduzida automaticamente e pode conter erros gramaticais ou imprecisões. O nosso objetivo é que estes conteúdos lhe sejam úteis. Pode informar-nos se as informações foram úteis no final desta página? Eis o artigo em inglês para referência.

Nota: A função, método, objeto ou propriedade descritas neste tópico é desativada se o serviço do Microsoft Jet expressão estiver em execução no modo sandbox, que impede a avaliação de expressões potencialmente inseguros. Para obter mais informações sobre o modo sandbox, procure "o modo sandbox" na ajuda.

Devolve uma referência a um objeto fornecido por um componente de ActiveX.

Sintaxe

GetObject ([nome do caminho ] [, classe ] )

A sintaxe da função GetObject tem os seguintes argumentos:

Argumento

Descrição

nome do caminho

Opcional. Variante (Cadeia). O caminho completo e o nome do ficheiro que contém o objeto para obter. Se o nome do caminho for omitido, é necessário a classe .

classe

Opcional. Variante (Cadeia). Uma cadeia que representa o classe do objeto.


A classeargumento utiliza sintaxe nome.ObjectType e tem as seguintes partes:

Parte

Descrição

nome

Obrigatório. Variante (Cadeia). O nome da aplicação que fornece o objeto.

ObjectType

Obrigatório. Variante (Cadeia). O tipo ou a classe de objeto para criar.


Observações

Nota: Os exemplos seguintes demonstram a utilização desta função no módulo VBA (Visual Basic for Applications). Para obter mais informações sobre trabalhar com o VBA, selecione Referência para Programadores na lista pendente junto a Procurar e introduza um ou mais termos na caixa de pesquisa.

Utilize a função GetObject para aceder a um objeto de ActiveX a partir de um ficheiro e atribuir o objeto a uma variável de objeto. Utilize a instrução Set para atribuir o objeto devolvido pela GetObject para a 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 com o nome do caminho especificado é iniciada e o objeto no ficheiro especificado está ativado.

Se o nome do caminho é uma cadeia de comprimento zero (""), GetObject devolve uma nova instância de objeto do tipo especificado. Se o argumento de nome do caminho for omitido, GetObject devolve um objeto atualmente ativo do tipo especificado. Se não existe nenhum objecto do tipo especificado, ocorre um erro.

Algumas aplicações permitem-lhe ativar a parte de um ficheiro. Adicionar um ponto de exclamação (!) para o fim do nome do ficheiro e siga-la por uma cadeia que identifica a parte do ficheiro que pretende ativar. Para obter informações sobre como criar esta cadeia, consulte a documentação para a aplicação que criou o objeto.

Por exemplo, numa aplicação de desenho poderá ter várias camadas para um desenho guardado num ficheiro. Pode utilizar o código seguinte para ativar uma camada dentro de um desenho denominado SCHEMA.CAD:

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

Se não especificar um objeto escolares, automatização determina a aplicação para iniciar e o objeto para ativar, com base no nome do ficheiro fornecidos. Alguns ficheiros, no entanto, poderão suporta mais de uma classe de objeto. Por exemplo, um desenho pode suportar três tipos diferentes de objetos: um objeto de aplicação , um objeto de desenho e um objeto de barra de ferramentas , todas as que fazem parte do mesmo ficheiro. Para especificar que objeto num ficheiro que pretende ativar, utilize o argumento opcional escolares . Por exemplo:

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

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

Assim que um objeto é ativado, pode referencia no código utilizando a variável de objeto que definiu. No exemplo anterior, aceder propriedades e métodos de novo objeto utilizando a variável de objeto 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 existe uma instância atual do objeto ou se pretende criar o objeto com um ficheiro já foi carregado. Se não existe nenhuma instância atual e não pretende que o objeto iniciado com um ficheiro carregado, utilize a função CreateObject .

Se um objeto tem registado propriamente dito como um objeto de ocorrência única, apenas uma instância do objeto é criado, sem relevante quantas vezes CreateObject é executado. Com um objeto de ocorrência única GetObject devolve sempre na mesma instância quando chamado com a cadeia de comprimento zero ("") sintaxe e provoca um erro se o argumento de nome do caminho é omitido. Não pode 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 cálculo específicas Microsoft Office Excel 2007 (MyXL). Utiliza propriedade da aplicação de folha de cálculo para tornar o Excel visível, fechá-lo e assim sucessivamente. Utilizar dois chamadas à API, procedimento DetectExcel Sub procura para o Excel e se estiver em execução, que introduz na tabela de objeto em execução. A primeira chamada para GetObject provoca um erro se já não está a executar o Microsoft Excel. No exemplo, o erro faz com que o sinalizador de ExcelWasNotRunning para definida como verdadeiro. A segunda chamada de GetObject Especifica um ficheiro para o abrir. Se já não está a executar o Excel, a segunda chamada inicia e devolve uma referência para a folha de cálculo representada pelo ficheiro especificado, mytest.xls. O ficheiro tem de existir na localização especificada; caso contrário, é gerado o erro de automatização de erro do Visual Basic. Em seguida, faz com que o código de exemplo Excel e a janela que contém a folha de cálculo especificada visível. Por fim, se não tiver nenhuma versão anterior do Excel em execução, o código utiliza método deto objeto de aplicação para fechar o Excel. Se já tiver sido executado a aplicação, não é tentativa para o fechar. A referência própria é disponibilizada pelo defini-la para 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
Aumente os seus conhecimentos do Office
Explore as formações
Seja o primeiro a obter novas funcionalidades
Adira ao Office Insider

As informações foram úteis?

Obrigado pelos seus comentários!

Obrigado pelo seu feedback! Parece que poderá ser benéfico reencaminhá-lo para um dos nossos agentes de suporte do Office.

×