Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

Resumo

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

Este artigo demonstra como adicionar dinamicamente um módulo VBA a uma aplicação em execução Office a partir do Visual Basic e, em seguida, chamar a macro para preencher uma base de dados em curso.

Mais Informações

O exemplo seguinte demonstra a inserção de um módulo de código no Microsoft Excel, mas pode utilizar a mesma técnica para o Word e PowerPoint porque ambos incorporam o mesmo motor VBA.

O exemplo utiliza um ficheiro de texto estático para o módulo de código que é inserido no Excel. Pode querer mover o código para um ficheiro de recurso que pode compilar para a sua aplicação e, em seguida, extrair para um ficheiro temporário quando for necessário no tempo de utilização. Isto tornaria o projeto mais fácil de gerir para re distribuição.

Começando com Microsoft Office XP, um utilizador tem de conceder acesso ao modelo de objeto VBA antes que qualquer código de automatização escrito para manipular VBA funcione. Esta é uma nova funcionalidade 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 a Office VBA XP Project negado

Passos para criar o exemplo

  1. Em primeiro lugar, crie um novo ficheiro de texto denominado KbTest.bas (sem a .txt Extensão). Este é o módulo de código que iremos inserir Excel em tempo de executar.

  2. No ficheiro 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. Guarde o ficheiro de texto no diretório C:\KbTest.bas e, em seguida, feche o ficheiro.

  4. Comece Visual Basic e crie um projeto padrão. O formulário1 é criado por predefinição.

  5. No menu Project, clique emReferências e, em seguida, selecione a versão da biblioteca de tipos adequada que lhe permite utilizar a encadernação antecipada para o Excel.

    Por exemplo, selecione uma das seguintes ações:

    • 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 Formulário1 e coloque o seguinte código no alças 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, tem de ativar o acesso ao projeto VBA. Para tal, utilize um dos métodos seguintes:

    • No Excel 2007, clique no botão de Microsoft Office e, em seguida, clique Excel Opções. Clique em Centro de Confiança e, em seguida, clique em Centro de Definições. Clique em Macro Definições, clique para selecionar a caixa de verificação Confiar no Acesso ao modelo de objeto do projeto VBA e, em seguida, clique duas vezes em OK.

    • No Excel 2003 e em versões anteriores do Excel, aponte para Macrono menu Ferramentas e, em seguida, clique em Segurança. Na caixa de diálogo Segurança, clique no separador Origens Fidederas e, em seguida, clique para selecionar a caixa de verificação Confiar no acesso Visual Basic Project Confiança.

  8. Execute o Visual Basic projeto.

Referências

Para obter mais informações sobre a Automatização de Office a partir Visual Basic, consulte o site Office de Suporte de Desenvolvimento no seguinte endereço:

http://support.microsoft.com/ofd

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×