Share via


Escrever código em soluções do Office

Há alguns aspectos de escrever código em projetos do Office que são diferentes de outros tipos de projetos no Visual Studio. Muitas dessas diferenças estão relacionadas à maneira como os modelos de objeto do Office são expostos ao código gerenciado. Outras diferenças estão relacionadas ao design de projetos do Office.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO. Consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Código gerenciado e programação do Office

A principal tecnologia que possibilita a criação de uma solução integrada do Microsoft Office é a automação, que faz parte da tecnologia COM (Component Object Model). A automação permite que você use código para criar e controlar objetos de software expostos por qualquer aplicativo, DLL ou controle ActiveX que ofereça suporte às interfaces programáticas apropriadas.

Compreender os assemblies de interoperabilidade primários

Os aplicativos do Microsoft Office expõem grande parte de suas funcionalidades à automação. No entanto, você não pode usar código gerenciado (como Visual Basic ou C#) diretamente para automatizar aplicativos do Office. Para automatizar aplicativos do Office usando código gerenciado, você deve usar os assemblies de interoperabilidade primária (PIAs) do Office. Os assemblies de interoperabilidade primários permitem que o código gerenciado interaja com o modelo de objeto baseado em COM dos aplicativos do Office.

Cada aplicativo do Microsoft Office tem um PIA. Quando você cria um projeto do Office no Visual Studio, uma referência ao PIA apropriado é adicionada automaticamente ao projeto. Para automatizar os recursos de outros aplicativos do Office do projeto, você deve adicionar uma referência ao PIA apropriado manualmente. Para obter mais informações, consulte Como direcionar aplicativos do Office por meio de assemblies de interoperabilidade primários.

Usar assemblies de interoperabilidade primários em tempo de design e tempo de execução

Você deve ter os PIAs do Office instalados e registrados no cache de assembly global no computador de desenvolvimento para executar a maioria das tarefas de desenvolvimento. Para obter mais informações, consulte Configurar um computador para desenvolver soluções do Office.

Os PIAs do Office não são necessários em computadores de usuário final para executar soluções do Office destinadas ao .NET Framework 4 ou posterior. Para obter mais informações, consulte Projetar e criar soluções do Office.

Usar tipos em assemblies de interoperabilidade primários

Os PIAs do Office contêm uma combinação de tipos que expõem o modelo de objeto dos aplicativos do Office e tipos de infraestrutura adicionais que não se destinam a ser usados diretamente em seu código. Para obter uma visão geral dos tipos nos PIAs do Office, consulte Visão geral de classes e interfaces nos assemblies de interoperabilidade primária do Office.

Como os tipos nos PIAs do Office correspondem a tipos nos modelos de objeto baseados em COM, a maneira como você usa esses tipos geralmente é diferente de outros tipos gerenciados. Por exemplo, a maneira como você chama métodos que têm parâmetros opcionais em um assembly de interoperabilidade primária do Office depende da linguagem de programação que você está usando em seu projeto. Para Mais informações, consulte os seguintes tópicos:

Modelo de programa de projetos do Office

Todos os projetos do Office incluem uma ou mais classes geradas que fornecem o ponto de entrada para seu código. Essas classes também fornecem acesso ao modelo de objeto do aplicativo host e acesso a recursos como painéis de ações e painéis de tarefas personalizados.

Entenda as classes geradas

Em projetos de nível de documento para Excel e Word, a classe gerada se assemelha a um objeto de nível superior no modelo de objeto do aplicativo. Por exemplo, a classe gerada ThisDocument em um projeto de documento do Word fornece os mesmos membros que a Document classe no modelo de objeto do Word. Para obter mais informações sobre as classes geradas em projetos de nível de documento, consulte Personalizações em nível de documento do programa.

Os projetos de suplemento VSTO fornecem uma classe gerada chamada ThisAddIn. Essa classe não se assemelha a uma classe no modelo de objeto do aplicativo host. Em vez disso, essa classe representa o próprio suplemento VSTO e fornece membros que você pode usar para acessar o modelo de objeto do aplicativo host e acessar outros recursos disponíveis para suplementos VSTO. Para obter mais informações, consulte Suplementos do programa VSTO.

Todas as classes geradas em projetos do Office incluem Startup manipuladores de Shutdown eventos. Para começar a escrever código, você normalmente adiciona código a esses manipuladores de eventos. Para inicializar o suplemento VSTO, você pode adicionar código ao Startup manipulador de eventos. Para limpar os recursos usados pelo suplemento VSTO, você pode adicionar código ao manipulador de Shutdown eventos. Para obter mais informações, consulte Eventos em projetos do Office.

Acesse as classes geradas em tempo de execução

Quando uma solução do Office é carregada, o Visual Studio Tools for Office runtime instancia cada uma das classes geradas em seu projeto. Você pode acessar esses objetos de qualquer código em seu projeto usando a Globals classe. Por exemplo, você pode usar a Globals classe para chamar código ThisAddIn na classe de um manipulador de eventos de um botão da Faixa de Opções em um suplemento VSTO.

Para obter mais informações, consulte Acesso global a objetos em projetos do Office.

Considerações sobre namespace em soluções do Office

Você não pode alterar o namespace padrão (ou namespace raiz no Visual Basic) de um projeto do Office depois de criar o projeto. O namespace padrão sempre corresponderá ao nome do projeto especificado quando você criou o projeto. Se você renomear seu projeto, o namespace padrão não será alterado. Para obter mais informações sobre o namespace padrão em projetos, consulte Página de aplicativo, Designer de projeto (C#) e Página de aplicativo, Designer de projeto (Visual Basic).

Alterar o namespace de classes de item de host em projetos C#

As classes de item de host (por exemplo, o ThisAddIn, ThisWorkbookou ThisDocument classes) têm seus próprios namespaces em projetos do Visual C# Office. Por padrão, o namespace para itens de host em seu projeto corresponde ao nome do projeto que você especificou quando criou o projeto.

Para alterar o namespace dos itens de host em um projeto do Visual C# Office, use o namespace para item de host propriedade. Para obter mais informações, consulte Propriedades em projetos do Office.

Linguagens de programação com suporte em projetos do Office

Os modelos de projeto do Office no Visual Studio oferecem suporte somente às linguagens de programação Visual Basic e Visual C#. Portanto, esses modelos de projeto estão disponíveis somente nos nós Visual Basic e Visual C# da caixa de diálogo Novo projeto no Visual Studio. Para obter mais informações, consulte Como: Criar projetos do Office no Visual Studio.

Escolha de idioma e programação do Office

O Microsoft Office e o Visual Basic for Applications (VBA) foram desenvolvidos para trabalhar juntos para otimizar o fluxo de trabalho de personalização de aplicativos. Visual Basic herdou alguns desses desenvolvimentos. Por exemplo, Visual Basic oferece suporte a parâmetros opcionais, o que significa que você pode escrever menos código ao chamar alguns métodos nos assemblies de interoperabilidade primária do Microsoft Office do que quando você usa o Visual C#.

Programa com Visual Basic vs. Visual C# em soluções do Office

Você pode criar soluções do Office usando Visual Basic ou Visual C#. Como os modelos de objeto do Microsoft Office foram projetados para serem usados com o Microsoft Visual Basic for Applications (VBA), os desenvolvedores do Visual Basic podem trabalhar confortavelmente com os objetos expostos pelos aplicativos do Microsoft Office. Os desenvolvedores do Visual C# podem usar a maioria dos mesmos recursos que os desenvolvedores do Visual Basic, mas há alguns casos em que eles devem escrever código adicional para usar os modelos de objeto do Office. Há também algumas diferenças entre recursos básicos de programação no desenvolvimento do Office e código gerenciado escrito em Visual Basic e C#.

Principais diferenças entre Visual Basic e Visual C#

A tabela a seguir mostra as principais diferenças entre Visual Basic e Visual C# no desenvolvimento do Office.

Recurso Descrição Suporte ao Visual Basic Suporte ao Visual C#
Parâmetros opcionais Muitos métodos do Microsoft Office têm parâmetros que não são necessários quando você chama o método. Se nenhum valor for passado para o parâmetro, um valor padrão será usado. Visual Basic oferece suporte a parâmetros opcionais. Visual C# oferece suporte a parâmetros opcionais na maioria dos casos. Para obter mais informações, consulte Parâmetros opcionais em soluções do Office.
Passando parâmetros por referência Os parâmetros opcionais na maioria dos assemblies de interoperabilidade primária do Microsoft Office podem ser passados por valor. No entanto, em alguns assemblies de interoperabilidade primários, parâmetros opcionais que aceitam tipos de referência devem ser passados por referência.

Para obter mais informações sobre parâmetros de valor e tipo de referência, consulte Passar argumentos por valor e por referência (Visual Basic) (para Visual Basic) e Passar parâmetros (guia de programação C#).
Nenhum trabalho adicional é necessário para passar parâmetros por referência. O compilador do Visual Basic passa automaticamente os parâmetros por referência quando necessário. Na maioria dos casos, o compilador do Visual C# passa automaticamente os parâmetros por referência quando necessário. Para obter mais informações, consulte Parâmetros opcionais em soluções do Office.
Propriedades parametrizadas Algumas propriedades aceitam parâmetros e atuam como funções somente leitura. Visual Basic oferece suporte a propriedades que aceitam parâmetros. Visual C# oferece suporte a propriedades que aceitam parâmetros.
Associação tardia A vinculação tardia envolve a determinação das propriedades dos objetos em tempo de execução, em vez de converter variáveis para o tipo de objeto em tempo de design. Visual Basic executa a vinculação tardia quando Option Strict está desativado. Quando Option Strict está ativado, você deve converter explicitamente objetos e usar tipos no System.Reflection namespace para acessar membros vinculados tardiamente. Para obter mais informações, consulte Vinculação tardia em soluções do Office. Visual C# executa vinculação tardia em projetos que visam o .NET Framework 4. Para obter mais informações, consulte Vinculação tardia em soluções do Office.

Principais diferenças entre o desenvolvimento do Office e o código gerenciado

A tabela a seguir mostra as principais diferenças entre o desenvolvimento do Office e o código gerenciado escrito em Visual Basic ou Visual C#.

Recurso Descrição Suporte a Visual Basic e Visual C#
Índices de matriz O limite inferior de matriz de coleções em aplicativos do Microsoft Office começa com 1. Visual Basic e Visual C# usam matrizes baseadas em 0. Para obter mais informações, consulte Matrizes (guia de programação em C#) e Matrizes no Visual Basic. Para acessar o primeiro item de uma coleção no modelo de objeto de um aplicativo do Microsoft Office, use o índice 1 em vez de 0.