Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.
Para obter uma Microsoft Visual C# .NET versão deste artigo, consulte 306683
(http://support.microsoft.com/kb/306683/
)
.
Para obter uma Microsoft Visual C++ versão deste artigo, consulte 306686
(http://support.microsoft.com/kb/306686/
)
.
Este artigo passo a passo descreve como chamar Office macros de um cliente de automatização do Visual Basic .NET.
Pode utilizar a automatização do Microsoft Office para abrir um documento ou criar um novo documento que contém uma macro do Visual Basic for Applications (VBA) e executar a macro em tempo de execução.
O cliente de automatização de exemplo seguinte manipula um servidor de automatização do Office (Access, Excel, PowerPoint ou Word) com base na selecção num formulário. Depois do cliente inicia o servidor de automatização, abre um documento e, em seguida, chama duas macros. A primeira macro, DoKbTest, não tem parâmetros e a segunda macro, DoKbTestWithParameter, demora um único parâmetro do tipo cadeia .
Criar documentos do office que contenham macros
Crie um documento do Word com o nome C:\Doc1.doc. Para o fazer, siga estes passos:
No Word, crie um novo documento.
Prima ALT+F11 para abrir o Editor do Visual Basic.
No menu Inserir , clique em módulo .
Cole o seguinte código de macro no novo módulo:
'Display a message box that displays the application name.
Public Sub DoKbTest()
MsgBox "Hello from " & Application.Name
End Sub
'Display a message box with the string passed from the
'Automation client.
Public Sub DoKbTestWithParameter( sMsg As String )
MsgBox sMsg
End Sub
Feche o Editor do Visual Basic, guardar o documento do Word e saia do Word.
Crie um livro do Excel com o nome c:\Livro1.xls utilizando passos semelhantes aos que utilizou para criar o documento do Word.
Criar uma apresentação do PowerPoint com o nome C:\Pres1.ppt utilizando os passos semelhantes aos que utilizou para criar a palavra documento.
Crie uma base novo de Access dados denominado C:\Db1.mdb. Para o fazer, siga estes passos:
No menu Inserir , clique em módulo .
Cole o código de macro no novo módulo.
Guarde o módulo e saia do Access.
Criar o cliente de automatização do Visual Basic .NET
Inicie o Microsoft Visual Studio NET.. No menu ficheiro , clique em Novo e, em seguida, clique em projecto . Seleccione Windows Application dos tipos de projectos do Visual Basic. É criado o Form1 por predefinição.
Adicione uma referência a bibliotecas de objectos da Access, Excel, PowerPoint e Word. Para o fazer, siga estes passos:
No menu projecto , clique em Add Reference .
No separador COM , localize o Microsoft Word 10.0 Object Library ou Microsoft Word 11.0 Object Library e, em seguida, clique em Seleccionar .
Nota Se estiver a utilizar Microsoft Office XP e não o tiver já feito, a Microsoft recomenda que transfira e instale o Microsoft Office XP Primary Interop Assemblies (PIAs). Para obter mais informações sobre PIAs do Office XP, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
328912
(http://support.microsoft.com/kb/328912/
)
Microsoft Office XP principais interop assemblies (PIAs) estão disponíveis para transferência
Repita o passo anterior para bibliotecas de objectos do Access, Excel e PowerPoint.
Clique em OK na caixa de diálogo Adicionar referências para aceitar as selecções. Se receber um pedido para gerar wrappers para as bibliotecas que seleccionou, clique em Sim .
Nota Se receber uma mensagem de erro quando referencia o Access 10.0 biblioteca de objectos, consulte a secção "Resolução de problemas".
No menu Ver , clique em caixa de ferramentas dos controlos . Adicione uma caixa de combinação e um botão ao Form1.
Faça duplo clique em Button1 para gerar uma definição para clicar no botão processador de eventos.
Cole o seguinte código no procedimento Button1_Click:
Select Case ComboBox1.SelectedItem
Case "Access"
Dim oAccess As Access.ApplicationClass
'Start Access and open the database.
oAccess = CreateObject("Access.Application")
oAccess.Visible = True
oAccess.OpenCurrentDatabase("c:\db1.mdb", False)
'Run the macros.
oAccess.Run ("DoKbTest")
oAccess.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
'Clean-up: Quit Access without saving changes to the database.
oAccess.DoCmd().Quit (Access.AcQuitOption.acQuitSaveNone)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oAccess)
oAccess = Nothing
Case "Excel"
Dim oExcel As Excel.ApplicationClass
Dim oBook As Excel.WorkbookClass
Dim oBooks As Excel.Workbooks
'Start Excel and open the workbook.
oExcel = CreateObject("Excel.Application")
oExcel.Visible = True
oBooks = oExcel.Workbooks
oBook = oBooks.Open("c:\book1.xls")
'Run the macros.
oExcel.Run ("DoKbTest")
oExcel.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
'Clean-up: Close the workbook and quit Excel.
oBook.Close (False)
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBook)
oBook = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oBooks)
oBooks = Nothing
oExcel.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oExcel)
oExcel = Nothing
Case "PowerPoint"
Dim oPP As PowerPoint.ApplicationClass
Dim oPresSet As PowerPoint.Presentations
Dim oPres As PowerPoint.PresentationClass
'Start PowerPoint and open the presentation.
oPP = CreateObject("PowerPoint.Application")
oPP.Visible = True
oPresSet = oPP.Presentations
oPres = oPresSet.Open("c:\pres1.ppt", , , True)
'Run the macros.
oPP.Run ("'pres1.ppt'!DoKbTest")
oPP.Run("'pres1.ppt'!DoKbTestWithParameter", "Hello from VB .NET Client")
'Clean-up: Close the presentation and quit PowerPoint.
oPres.Close()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPres)
oPres = Nothing
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPresSet)
oPresSet = Nothing
oPP.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oPP)
oPP = Nothing
Case "Word"
Dim oWord As Word.ApplicationClass
'Start Word and open the document.
oWord = CreateObject("Word.Application")
oWord.Visible = True
oWord.Documents.Open ("C:\Doc1.doc")
'Run the macros.
oWord.Run ("DoKbTest")
oWord.Run("DoKbTestWithParameter", "Hello from VB .NET Client")
'Quit Word.
oWord.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject (oWord)
oWord = Nothing
End Select
GC.Collect()
No menu Ver , clique em Designer e faça duplo clique em Form1 para gerar uma definição de evento de carregamento do formulário.
Cole o seguinte código no procedimento Form1_Load:
ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
Dim a As String() = {"Access", "Excel", "PowerPoint", "Word"}
ComboBox1.Items.AddRange(a)
ComboBox1.SelectedIndex = 0
Adicione o seguinte código para a parte superior do Form1.VB:
Seleccione uma aplicação do Office ComboBox1 e, em seguida, clique em Button1 . A aplicação do Office que seleccionou é iniciada e as macros DoKBTest e DoKBTestWithParameter são executadas.
Quando referenciar a biblioteca de objectos Access 10.0 num projecto do Visual Basic. NET, receberá uma mensagem de erro que indica que a conversão da biblioteca para uma assemblagem .NET falhou. Para obter mais informações sobre como resolver este problema, de modo que com êxito pode referenciar a biblioteca de objectos Access 10.0, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
317157
(http://support.microsoft.com/kb/317157/
)
PROBLEMA: Erros quando referenciar a biblioteca de tipo de Access 10.0 com o Visual Studio .NET
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306682
(http://support.microsoft.com/kb/306682/en-us/
)
Qual foi o esforço que despendeu pessoalmente para utilizar este artigo?
Muito baixo
Baixo
Moderado
Elevado
Muito elevado
Diga-nos porquê e o que podemos fazer para melhorar estas informações
Obrigado! Os seus comentários são utilizados para ajudar-nos a melhorar o conteúdo do nosso suporte. Para obter mais opções de assistência, visite a Home Page de Ajuda e Suporte.