Entrar com a conta da Microsoft
Entrar ou criar uma conta.
Olá,
Selecionar uma conta diferente.
Você tem várias contas
Escolha a conta com a qual você deseja entrar.

Resumo

Ao automatizar um Office do Visual Basic, pode ser útil mover parte do código para um módulo do Microsoft Visual Basic for Applications (VBA) que pode ser executado dentro do espaço de processo do servidor. Isso pode aumentar a velocidade de execução geral do aplicativo e ajudar a aliviar problemas se o servidor executar apenas uma ação quando uma chamada é feita no processo.

Este artigo demonstra como adicionar dinamicamente um módulo VBA a um aplicativo de Office em execução do Visual Basic e, em seguida, chamar a macro para preencher uma planilha no processo.

Informações adicionais

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 VBA.

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

A partir Microsoft Office XP, um usuário deve conceder acesso ao modelo de objeto VBA antes que qualquer código de Automação escrito para manipular o VBA funcione. Este é um novo recurso de segurança com Office XP. Para obter mais informações, consulte o seguinte artigo da Base de Dados de Conhecimento:

282830 Acesso programático ao Office VBA do XP Project negado

Etapas para criar o exemplo

  1. Primeiro, crie um novo arquivo de texto chamado KbTest.bas (sem a extensão .txt de texto). Este é o módulo de código que inseriremos no Excel em tempo de executar.

  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 e feche o arquivo.

  4. Inicie Visual Basic e crie um projeto padrão. Form1 é criado por padrão.

  5. No menu Project, clique emReferences e selecione a versão de biblioteca de tipos apropriada que permite usar a associação antecipada para Excel.

    Por exemplo, selecione um dos seguintes:

    • Para Microsoft Office Excel 2007, selecione a biblioteca 12.0.

    • Para Microsoft Office Excel 2003, selecione a biblioteca 11.0.

    • Para Microsoft Excel 2002, selecione a biblioteca 10.0.

    • Para Microsoft Excel 2000, selecione a biblioteca 9.0.

    • Para Microsoft Excel 97, selecione a biblioteca 8.0.

  6. Adicione um botão ao Form1 e coloque o seguinte código no manipulador para o evento Click do botão:

       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 Excel 2002 e para versões posteriores do Excel, você deve ativar o acesso ao projeto do VBA. Para fazer isso, utilize um dos métodos seguintes:

    • Em Excel 2007, clique no botão Microsoft Office e clique em Excel Opções. Clique em Central de Confiações e clique em Central de Confia Configurações. Clique em Macro Configurações, clique para selecionar a caixa de seleção Acesso de Confiança para o modelo de objeto do projeto VBA e clique em OK duas vezes.

    • Em Excel 2003 e em versões anteriores do Excel, aponte para Macrono menu Ferramentas e clique em Segurança. Na caixa de diálogo Segurança, clique na guia Fontes Confiáveis e clique para selecionar a caixa de seleção Confiar no acesso Visual Basic Project.

  8. Execute o Visual Basic projeto.

Referências

Para obter mais informações sobre Automação de Office de Visual Basic, consulte o site Office suporte ao desenvolvimento no seguinte endereço:

http://support.microsoft.com/ofd

Precisa de mais ajuda?

Quer mais opções

Explore os benefícios da assinatura, procure cursos de treinamento, saiba como proteger seu dispositivo e muito mais.

As comunidades ajudam você a fazer e responder perguntas, fazer comentários e ouvir especialistas com conhecimento avançado.

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?
Ao pressionar enviar, seus comentários serão usados para aprimorar os produtos e serviços da Microsoft. Seu administrador de TI poderá coletar esses dados. Política de Privacidade.

Agradecemos seus comentários!

×