Escolar Documentos
Profissional Documentos
Cultura Documentos
O Visual Studio 2008 Tools for Office 2007 (VSTO 3.0) fornece o suporte a
programação para Word, Excel, Outlook, PowerPoint, Project, Visio e InfoPath
no Visual Studio e permite que os documentos Word e Excel sejam
programados usando as classes da plataforma .NET, as quais possuem um
grande suporte ao data binding, tornando mais fácil a integração com as
ferramentas do pacote Office.
Na tabela a seguir temos as aplicações Office 2007 que são suportadas pelo
VSTO 3.0 e as várias características do VSTO que estão habilitadas para cada
aplicação Office.
Fonte: http://tinyurl.com/3a6tc9e
Uma boa parte da programação Office envolve escrever código que usa o
modelo de objetos das aplicações Office.
Para se comunicar com essas interfaces COM a partir do código Visual Basic ou
C# temos que usar um invólucro que permita que o código gerenciado interaja
com as interfaces COM não gerenciadas do Office.
Na maioria dos projetos VSTO não é preciso incluir uma referência a PIA
porque a referência é automaticamente incluída para você.
Para incluir uma referência no projeto clique com o botão direito do mouse
sobre a pasta References do projeto e escolhe a opção Add Reference do
menu; a seguir escolha a aba COM e selecione a referência da lista de
referências apresentadas.
Vou dar um exemplo básico de como usar os recursos do VSTO para interagir com o
Excel.
No código abaixo temos uma aplicação console que usa ambos os métodos
descritos acima. Primeiro usamos o GetActiveObjet para obter uma instância
do Excel já em execução. Se o Excel não estiver rodando irá ocorrer uma
exceção do tipo COMException.
using System;
using Excel = Microsoft.Office.Interop.Excel;
using System.Windows.Forms;
namespace Office_VSTO
{
class Program
{
static void Main(string[] args)
{
Excel.Application meuExcel = null;
try
{
meuExcel =
System.Runtime.InteropServices.Marshal.GetActiveObject
("Excel.Application") as Excel.Application;
}
catch
(System.Runtime.InteropServices.COMException e)
{
MessageBox.Show(String.Format("Aplicação
Excel não esta rodando...:{0} ", e.Message));
return;
}
if (meuExcel != null)
{
MessageBox.Show("Anexado com sucesso a
aplicação Excel em execução.");
meuExcel.Visible = true;
meuExcel.StatusBar = " www.macoratti.net";
Excel.Workbook meuWorkbook =
meuExcel.Workbooks.Add(System.Type.Missing);
//Salva o workbook
meuWorkbook.Save();
string nomeArquivo = meuWorkbook.FullName;
//descarta o objeto
meuExcel = null;
//reconecta usando o nome do arquivo e
BindToMoniker
Excel.Workbook meuWorkbook2 = null;
try
{
meuWorkbook2 =
System.Runtime.InteropServices.Marshal.BindToMoniker(n
omeArquivo) as Excel.Workbook;
}
catch
(System.Runtime.InteropServices.COMException e)
{
MessageBox.Show(String.Format("O arquivo
{0} não esta rodando: {1} ", nomeArquivo, e.Message));
return;
}
if (meuWorkbook2 != null)
{
MessageBox.Show(String.Format("Anexado
com sucesso ao moniker {0}.", nomeArquivo);
meuWorkbook2=null;
}
}
}
}
}
Ao rodar o projeto se o Excel não estiver em execução iremos obter uma exceção
conforme a figura abaixo:
Se o Excel estiver em execução iremos obter a mensagem indicando que estamos
usando a instância do Excel em execução:
Aguarde mais artigos sobre o assunto quando irei abordar aplicações práticas com o
VSTO.