Sintomas

Ao executar código que utiliza a Automatização para controlar o Microsoft Excel, pode ocorrer um dos seguintes erros: No Microsoft Excel 97 e em versões posteriores do Excel, recebe uma das seguintes mensagens de erro:

Mensagem de erro 1

Erro de tempo de execução "1004": O método "<nome do método>" do objeto "_Global" falhou

Mensagem de erro 2

Erro definido pela aplicação ou definido pelo objeto

No Microsoft Excel 95, recebe uma das seguintes mensagens de erro:

Mensagem de erro 1

Erro de tempo de execução "-2147023174" Erro de Automatização OLE

Mensagem de erro 2

Erro de tempo de execução "462": O computador do servidor remoto não existe ou está indisponível.

Causa

O Visual Basic estabeleceu uma referência ao Excel devido a uma linha de código que chama um objeto, método ou propriedade do Excel sem qualificar o elemento com uma variável de objeto do Excel. O Visual Basic não lança esta referência até terminar o programa. Esta referência errante interfere com o código de automatização quando o código é executado mais do que uma vez.

Resolução

Para resolver este problema, modifique o código para que cada chamada para um objeto, método ou propriedade do Excel seja qualificada com a variável de objeto adequada.

Estado

Este comportamento é por predefinição.

Mais Informações

Para automatizar o Microsoft Excel, estabelece uma variável de objeto que normalmente se refere ao objeto Aplicação do Excel ou ao objeto Livro do Excel. Outras variáveis de objeto podem ser definidas para fazer referência a uma Folha de Cálculo, a um Intervalo ou a outros objetos no modelo de objetos do Microsoft Excel. Quando escreve código para utilizar um objeto, método ou propriedade do Excel, deve sempre preceder a chamada com a variável de objeto adequada. Se não o fizer, o Visual Basic estabelece a sua própria referência ao Excel. Esta referência pode causar problemas quando tenta executar o código de automatização várias vezes. Tenha em atenção que, mesmo que a linha de código comece com a variável de objeto, pode ser efetuada uma chamada para um objeto, método ou propriedade do Excel no meio da linha de código que não é precedida de uma variável de objeto.Os passos seguintes ilustram como reproduzir este problema e como corrigir o problema.

Passos para reproduzir o comportamento

  1. Inicie um novo projeto EXE Standard no Visual Basic. O Formulário1 é criado por predefinição.

  2. No menu Projeto , clique em Referências e, em seguida, verifique a Biblioteca de Objetos da versão do Excel que pretende automatizar.

  3. Coloque um controlo CommandButton no Form1.

  4. Copie o seguinte exemplo de código para a Janela de Código do Formulário1.

          Option Explicit
    
          Private Sub Command1_Click()
             Dim xlApp As Excel.Application
             Dim xlBook As Excel.Workbook
             Dim xlSheet As Excel.Worksheet
             Set xlApp = CreateObject("Excel.Application")
             Set xlBook = xlApp.Workbooks.Add
             Set xlSheet = xlBook.Worksheets("Sheet1")
             xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
             xlBook.Saved = True
             Set xlSheet = Nothing
             Set xlBook = Nothing
             xlApp.Quit
             Set xlApp = Nothing
          End Sub
    
  5. No menu Executar , clique em Iniciar ou prima F5 para iniciar o programa.

  6. Clique no controlo CommandButton . Não ocorre nenhum erro. No entanto, foi criada uma referência ao Excel e não foi lançada.

  7. Clique novamente no controlo CommandButton . Repare que recebe uma das mensagens de erro que são abordadas na secção "Sintomas".Nota A mensagem de erro ocorre porque o código refere-se ao método da célula sem antes da chamada com o variável de objeto xlSheet.

  8. Pare o projeto e altere a seguinte linha de código:

    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
    

    Altere a linha de código para se assemelhar à seguinte linha de código.

    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
    
  9. Execute o programa novamente. Repare que pode executar o código várias vezes sem receber uma mensagem de erro.

Referências

189618 Poderá receber a mensagem de erro "-2147023174" (800706ba)" ou "Erro de tempo de execução "462" quando executa o código do Visual Basic que utiliza a Automatização para controlar Word  

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.