Importar automaticamente uma macro para o Excel e executá-la

0

Eu fiz um módulo, ou seja, um arquivo .bas que faz o trabalho que eu quero fazer no Excel. Eu tenho que trabalhar com esse mesmo módulo em quatro arquivos diferentes todos os dias.

Agora eu quero, digamos, um script que vincule automaticamente este módulo ao arquivo do Excel e, em seguida, a macro seja executada sozinha.

O código que eu tentei até agora é:

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample() 

  Dim xlApp 
  Dim xlBook 

  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\Denied_report.csv", 0, True) 
  xlApp.Run "PERSONAL.XLSB!AllowedMacro"
  xlApp.SaveAs
  xlApp.ActiveWorkbook.Close
  xlApp.Quit 

  Set xlBook = Nothing 
  Set xlApp = Nothing 

End Sub 

Estou usando o arquivo pessoal para que ele esteja disponível para todos os arquivos do Excel e não precise importá-lo toda vez abrindo o arquivo do Excel e fazendo isso!

    
por Developer by Blood 24.02.2013 / 14:34

2 respostas

1

Você pode querer experimentar a função Workbook_open. Isso será executado assim que você abrir o Excel.

Public WithEvents App As Application

Private Sub Workbook_Open()
    'runs once per Excel session when Personal.xlsb is opened.
    Set App = Application
    MsgBox "Running Workbook_Open from Personal.xlsb"
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    MsgBox "Running App_WorkbookOpen in " & Wb.Name
    'add code you want to run upon opening each workbook here
   '.....
End Sub

Veja: link

    
por 24.02.2013 / 16:26
0

Eu tentei isso em vez disso e isso funcionou:

Option Explicit

    LaunchMacro

  Sub LaunchMacro() 
      Dim xl
      Dim xlBook      
      Dim strFile


        strFile = "C:\De1.csv"
        Set xl = CreateObject("Excel.application")
        Set xlBook = xl.Workbooks.Open("C:\De.csv", 0, False ) 

        xl.Application.Visible = True

        xl.Application.run "PERSONAL.XLSB!Allowed_Macro"
        xl.DisplayAlerts = False        
        xlBook.saved = True
        xl.ActiveWorkbook.SaveAs strFile

        xl.activewindow.close
        xl.Quit

        Set xlBook = Nothing
        Set xl = Nothing

End Sub 

O único problema que estou enfrentando agora é que eu sou qualquer formatação que minha macro faça, eles não persistem depois de salvar.

    
por 24.02.2013 / 17:43