Importer automatiquement une macro dans Excel et l'exécuter

0

J'ai créé un module, c'est-à-dire un .basfichier qui fait le travail que je veux faire dans Excel. Je dois travailler avec ce même module dans quatre fichiers différents chaque jour.

Maintenant, je veux, disons, un script qui lie automatiquement ce module au fichier Excel, puis la macro s'exécute toute seule.

Le code que j'ai essayé jusqu'à présent est le suivant:

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 

J'utilise le fichier personnel de manière à ce qu'il soit disponible pour tous les fichiers Excel et je n'ai pas à l'importer à chaque fois en ouvrant le fichier Excel, ce qui est le cas!

Développeur par Blood
la source

Réponses:

1

Vous voudrez peut-être essayer la fonction Workbook_open. Cela fonctionnera dès que vous ouvrez 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

Voir: http://www.mrexcel.com/forum/excel-questions/562394-workbook_open-personal-xlsb-problems-need-correct-sub-procedure.html

Robert Ilbrink
la source
@ Robert Ilbrink Le précédent est la réponse à ma question. Merci pour votre sollicitude.
Développeur par Blood
0

J'ai essayé ceci à la place et cela a fonctionné:

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 

Le seul problème que je rencontre maintenant est que, quelle que soit la mise en forme de ma macro, celle-ci ne persiste pas après la sauvegarde.

Développeur par Blood
la source
Veuillez ouvrir une nouvelle question - idéalement sur StackOverflow!
Peter Albert
CSV ne stocke aucun formatage, seulement les données! Vous devez le sauvegarder au format .xlsm!
Peter Albert
@PeterAlbert Des questions sur les macros Excel peuvent également être posées ici, elles ne sont pas hors sujet.
Slhck
1
@slhck: Ok, bon à savoir. Même si je suppose qu’en regardant le public, SO aura probablement plus d’experts de la VBA le regarder ...
Peter Albert
@ PeterAlbert J'ai essayé de le renommer en .xlsm lors de la sauvegarde, mais ce fichier .xlsm génère une erreur et ne s'ouvre pas. Des astuces?
Développeur par Blood