Você está offline; aguardando reconexão

Como adicionar dinamicamente e executar uma macro VBA do Visual Basic

Support for Office 2003 has ended

Microsoft ended support for Office 2003 on April 8, 2014. This change has affected your software updates and security options. Learn what this means for you and how to stay protected.

IMPORTANTE: Este artigo foi traduzido pelo software de tradução automática da Microsoft e eventualmente pode ter sido editado pela Microsoft Community através da tecnologia Community Translation Framework (CTF) ou por um tradutor profissional. A Microsoft oferece artigos traduzidos automaticamente por software, por tradutores profissionais e editados pela comunidade para que você tenha acesso a todos os artigos de nossa Base de Conhecimento em diversos idiomas. No entanto, um artigo traduzido pode conter erros de vocabulário, sintaxe e/ou gramática. A Microsoft não é responsável por qualquer inexatidão, erro ou dano causado por qualquer tradução imprecisa do conteúdo ou por seu uso pelos nossos clientes.

Clique aqui para ver a versão em Inglês deste artigo: 219905
Sumário
Quando umutomating um produto do Office do Visual Basic, pode ser útil mover parte do código em um Microsoft Visual Basic for Applications (VBA) módulo que possa ser executado dentro do espaço de processo do servidor. Isso pode aumentar a velocidade de execução geral para o seu aplicativo e ajudar a aliviar problemas se o servidor executa apenas uma ação quando uma chamada é feita no processo.

Este artigo demonstra como adicionar dinamicamente um VBA módulo para um aplicativo do Office em execução do Visual Basic e, em seguida, chamar a macro para preencher um planilha no processo.
Mais Informações
O exemplo a seguir demonstra a inserção de um módulo de código no Microsoft Excel, mas você pode usar a mesma técnica para Word e PowerPoint porque ambos incorporam o mesmo mecanismo do VBA.

O exemplo usa um arquivo de texto estático para o módulo de código é inserido no Excel. Talvez você queira mover o código para um arquivo de recurso que você pode compilar em seu aplicativo e, em seguida, extrair para um arquivo temporário quando necessário em tempo de execução. Isso tornaria o projeto mais gerenciável para redistribuição.

A partir do Microsoft Office XP, um usuário deve conceder acesso ao modelo de objeto VBA antes de qualquer código de automação escrito para manipular VBA funcionará. Este é um novo recurso de segurança com o Office XP. Para obter mais informações, consulte o seguinte artigo da base de Conhecimento:
282830 Negado acesso programático ao projeto do VBA do Office XP

Etapas para criar o exemplo

  1. Primeiro, crie um novo arquivo de texto chamado KbTest.bas (sem extensão de the.txt). Este é o módulo de código serão inseridos no tempo de atrun do Excel.
  2. No arquivo de texto, adicione as seguintes linhas de código:
       Attribute VB_Name = "KbTest"   ' Your Microsoft Visual Basic for Applications macro function takes 1    ' parameter, the sheet object that you are going to fill.   Public Sub DoKbTest(oSheetToFill As Object)      Dim i As Integer, j As Integer      Dim sMsg As String      For i = 1 To 100         For j = 1 To 10            sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"            oSheetToFill.Cells(i, j).Value = sMsg         Next j      Next i   End Sub					
  3. Salve o arquivo de texto no diretório C:\KbTest.bas, thenclose o arquivo.
  4. Inicie o Visual Basic e crie um projeto padrão. Form1 iscreated por padrão.
  5. Sobre oProjetomenu, clique emReferênciase, em seguida, selecione a versão da biblioteca de tipo apropriado que permite a você usar ligação inicial para o Excel.

    Por exemplo, selecione uma das seguintes opções:
    • Para o Microsoft Office Excel 2007, selecione a biblioteca 12.0.
    • Para o Microsoft Office Excel 2003, selecione a biblioteca 11.0.
    • Para o Microsoft Excel 2002, selecione a biblioteca 10.0.
    • Para o Microsoft Excel 2000, selecione a biblioteca 9.0.
    • Para o Microsoft Excel 97, selecione a biblioteca 8.0.
  6. Adicione um botão ao Form1 e coloque o seguinte código em thehandler para o botão Clique em evento:
       Private Sub Command1_Click()      Dim oXL As Excel.Application      Dim oBook As Excel.Workbook      Dim oSheet As Excel.Worksheet      Dim i As Integer, j As Integer      Dim sMsg As String          ' Create a new instance of Excel and make it visible.      Set oXL = CreateObject("Excel.Application")      oXL.Visible = True       ' Add a new workbook and set a reference to Sheet1.      Set oBook = oXL.Workbooks.Add      Set oSheet = oBook.Sheets(1)          ' Demo standard Automation from out-of-process,    ' this routine simply fills in values of cells.      sMsg = "Fill the sheet from out-of-process"      MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground            For i = 1 To 100         For j = 1 To 10            sMsg = "Cell(" & Str(i) & "," & Str(j) & ")"            oSheet.Cells(i, j).Value = sMsg         Next j      Next i          ' You're done with the first test, now switch sheets    ' and run the same routine via an inserted Microsoft Visual Basic     ' for Applications macro.      MsgBox "Done.", vbMsgBoxSetForeground      Set oSheet = oBook.Sheets.Add      oSheet.Activate            sMsg = "Fill the sheet from in-process"      MsgBox sMsg, vbInformation Or vbMsgBoxSetForeground          ' The Import method lets you add modules to VBA at    ' run time. Change the file path to match the location    ' of the text file you created in step 3.      oXL.VBE.ActiveVBProject.VBComponents.Import "C:\KbTest.bas"       ' Now run the macro, passing oSheet as the first parameter      oXL.Run "DoKbTest", oSheet          ' You're done with the second test      MsgBox "Done.", vbMsgBoxSetForeground          ' Turn instance of Excel over to end user and release    ' any outstanding object references.      oXL.UserControl = True      Set oSheet = Nothing      Set oBook = Nothing      Set oXL = Nothing         End Sub					
  7. Para o Excel 2002 e versões posteriores do Excel, você deve ativar acesso o projeto do VBA. Fazer isso, use um dos seguintes métodos:
    • No Excel 2007, clique no Botão do Microsoft Officee, em seguida, clique em Opções do Excel. Clique em Central de confiabilidadee, em seguida, clique em Configurações da Central de confiabilidade. Clique em Configurações de Macro, clique para selecionar a caixa de seleção Acesso confiável ao modelo de objeto do projeto do VBA e, em seguida, clique em OK duas vezes.
    • No Excel 2003 e em versões anteriores do Excel, aponte para Macro no menu Ferramentas e, em seguida, clique em segurança. Na caixa de diálogo segurança , clique na guia Fontes confiáveis e, em seguida, clique para selecionar a caixa de seleção Confiar no acesso ao projeto do VisualBasic .
  8. Execute o projecto de Visual Basic.
Referências
Para obter mais informações sobre automação do Office a partir do Visual Basic, consulte o site de suporte de desenvolvimento do Office no seguinte endereço:
OFF2007 XL2007

Propriedades

ID do Artigo: 219905 - Última Revisão: 03/15/2015 07:11:00 - Revisão: 6.0

Microsoft Office Excel 2007, Microsoft Excel 2002 Standard Edition, Microsoft Excel 2000 Standard Edition, Microsoft Excel 97 Standard Edition, Microsoft Visual Basic 5.0 Learning Edition, Microsoft Visual Basic 5.0 Professional Edition, Microsoft Visual Basic 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Office Professional 2007, Microsoft Office Standard 2007, Microsoft Office Professional Edition 2003, Microsoft Office XP Developer Edition, Microsoft Office 2000 Developer Edition, Microsoft Office Excel 2003, Microsoft Excel 2010

  • kbexpertisebeginner kbautomation kbhowto kbmt KB219905 KbMtpt
Comentários
pt>"); ml>