XL2000: Macros de exemplo para criar um módulo a partir de um módulo existente, o intervalo com nome ou o ficheiro de texto

Traduções de Artigos Traduções de Artigos
Artigo: 245801 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Poderá pretender programaticamente inserir armazenado código Visual Basic for Applications (VBA) num novo livro que criar com o método Workbooks.Add . Isto poderá ser necessário se programaticamente criar novos livros que pretende que contenha dados e macros.

Este artigo descreve métodos automatizados que pode utilizar para tirar o código VBA que é armazenado num módulo de outro livro aberto, um intervalo com nome numa folha de cálculo, ou num ficheiro de texto, e inserido um novo livro em branco.

Mais Informação

A Microsoft fornece exemplos de programação apenas, para fins sem garantia expressa ou implícita. Isto inclui, mas não está limitado a, as garantias implícitas de comercialização ou adequação a um fim específico. Este artigo pressupõe que está familiarizado com a linguagem de programação apresentada e as ferramentas que são utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às necessidades específicas do utilizador. Nota : os seguintes métodos necessitam um um livro existente com o código armazenado um módulo ou intervalo com nome folha de cálculo ou um ficheiro de texto guardado que contém o código armazenado.

Todos os exemplos abaixo requerem uma referência para o Microsoft Visual Basic para aplicações de extensibilidade. Para criar esta referência no Editor do Visual Basic, clique em References no menu Ferramentas e, em seguida, clique para seleccionar a caixa de verificação do Microsoft Visual Basic for Application Extensibility 5.3 .

Para inserir código de um módulo existente

  1. De um livro existente, insira o seguinte código:
    Sub ExportCodeMod()
    
     ' Dimension variables
       Dim strCode As String
       Dim vbCom As VBComponent
       Dim modObj As Object
    
     ' Set object to the module you want to export.
       Set modObj = _
          Application.VBE.ActiveVBProject.VBComponents.Item("modTest")
     ' Place code in a string.
       strCode = modObj.CodeModule.Lines(1, modObj.CodeModule.CountOfLines)
     ' Create new workbook.
       Application.Workbooks.Add
     ' Create a new module in workbook.
       Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
     ' Add code to new module from string variable.
       Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
          .CodeModule.AddFromString (strCode)
    
    End Sub
    					
  2. Quando executa ExportCodeMod, cria um novo livro com um módulo chamado Module1 , que contém o código do módulo existente, denominado modTest .

    Para testar este código de exemplo, terá de mudar o nome de um módulo "modTest". Para mudar o nome de um módulo existente, no Editor do Visual Basic, seleccionar o módulo na janela Explorador de projecto; em seguida, na janela de propriedades, escreva um novo nome para o módulo. Se não visualizar a janela Explorador de projecto ou janela de propriedades, clique nestes nomes de janela no menu Ver no Editor do Visual Basic.

Para inserir código de um intervalo com nome

  1. No Editor do Visual Basic, copie o código macro (VBA) existente que pretende inserir o novo livro.
  2. Mude para o Excel premindo ALT + F11 ou clicando em Microsoft Excel no menu Ver e, em seguida, cole o código numa folha de cálculo.
  3. Seleccione todo o intervalo que contém o código de macro.
  4. No menu Inserir , aponte para Nome e, em seguida, clique em Definir .
  5. Escreva um nome para o intervalo, tal como MacroCode e clique em OK .
  6. Mude novamente para o Editor do Visual Basic premindo ALT+F11 ou apontando para macro no menu Ferramentas e, em seguida, clicando em Editor do Visual Basic .
  7. Escreva o seguinte código num módulo de livro existente:
    Sub ExportCodeNR()
    
     ' Dimension variable
       Dim strCode As String
    
     ' Read code from named range and store in variable
       For Each cl In Range("MacroCode")
          strCode = strCode & cl.Value & Chr$(10)
       Next
    
     ' Create new workbook.
       Application.Workbooks.Add
     ' Create a new module in workbook.
       Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
     ' Add code to new module from string variable.
       Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
          .CodeModule.AddFromString (strCode)
    
    End Sub
    					
  8. Quando executa a macro ExportCodeNR, cria um novo livro que contém um módulo chamado Module1 e, em seguida, insere o código localizado no intervalo com nome "MacroCode".

Para inserir código de um ficheiro de texto

  1. Um ficheiro de texto (Este exemplo utiliza C:\Code.txt), cole o código macro (VBA) que pretende inserir no livro novo. Em seguida, guarde e feche o ficheiro de texto.
  2. Escreva o seguinte código num módulo de livro existente.

    Para fazê-lo sem programaticamente ler o ficheiro de texto, pode utilizar o método AddFromFile , da seguinte forma:
    Sub ExportCodeTXT2()
    
     ' Create new workbook.
       Application.Workbooks.Add
     ' Create a new module in workbook.
       Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
     ' Add code to new module from string variable.
       Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
          .CodeModule.AddFromFile ("C:\Code.txt")
    
    End Sub
    						
    é criado um novo livro, que contém um módulo chamado Module1 , que contém o código do ficheiro de texto. Para obter o mesmo resultado lendo programaticamente através da ficheiro de texto linha por linha, pode utilizar o método AddFromString , da seguinte forma:
    Sub ExportCodeTXT()
    
     ' Dimension variables
       Dim strCode, strLine As String
       Dim FileNum As Integer
    
     ' Store the path and file name of text file.
       FileName = "C:\Code.txt"
     ' Get next available file handle number.
       FileNum = FreeFile()
     ' Open text file for input.
       Open FileName For Input As #FileNum
     ' Loop until the end of file is reached.
       Do While Seek(FileNum) <= LOF(FileNum)
        ' Store one line of text from file to variable.
          Line Input #FileNum, strLine
          strCode = strCode & strLine & Chr$(10)
       Loop
    
     ' Close the open text file.
       Close
    
     ' Create new workbook.
       Application.Workbooks.Add
     ' Create a new module in workbook.
       Application.VBE.ActiveVBProject.VBComponents.Add (vbext_ct_StdModule)
     ' Add code to new module from string variable.
       Application.VBE.ActiveVBProject.VBComponents.Item("Module1") _
          .CodeModule.AddFromString (strCode)
    
    End Sub
    					
É criado um novo livro, com um módulo chamado Module1 , que contém o código do ficheiro de texto.

Referências

Para mais informações sobre os objectos no Editor do Visual Basic, no Editor do Visual Basic, clique em Ajuda do Microsoft Visual Basic no menu Ajuda , escreva propriedade vbe no Assistente do Office ou no Assistente de respostas e, em seguida, clique em Procurar para visualizar o tópico.

Propriedades

Artigo: 245801 - Última revisão: 11 de outubro de 2006 - Revisão: 4.2
A informação contida neste artigo aplica-se a:
  • Microsoft Excel 2000 Standard Edition
Palavras-chave: 
kbmt kbdtacode kbhowto KB245801 KbMtpt
Tradução automática
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: 245801

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com