Est-il possible d'exécuter une macro dans Excel à partir d'une commande externe?

disons que je veux programmer un code VBA dans un programme externe qui ouvre un fichier Excel, exécute une macro, sauve (et dire oui à n'importe quel pop up windows), et fermer Excel. Est-il possible de le faire? Dans l'affirmative, comment le mettrais-je en œuvre?

0
demandé sur Community 2010-07-06 07:08:20

3 réponses

vous pouvez lancer Excel, ouvrir un classeur et ensuite manipuler le classeur à partir d'un fichier VBScript.

Copiez le code ci-dessous dans le bloc-notes.

mettre à jour le ' MyWorkbook.paramètres xls' et 'Sheet1'.

enregistrez - le avec une extension vbs et lancez-le.

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample() 

  Dim xlApp 
  Dim xlBook 

  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\MyWorkbook.xls") 
  xlBook.Sheets("Sheet1").Cells(1, 1).Value = "My text"
  xlBook.Sheets("Sheet1").Cells(1, 1).Font.Bold = TRUE
  xlBook.Sheets("Sheet1").Cells(1, 1).Interior.ColorIndex = 6
  xlBook.Save
  xlBook.Close
  xlApp.Quit 

  Set xlBook = Nothing 
  Set xlApp = Nothing 

End Sub 

ce code ci-dessus lance Excel ouvre un classeur, entre une valeur dans la cellule A1, le rend gras et change la couleur de la cellule. Classeur est ensuite enregistré et fermé. Excel est alors fermé.

4
répondu Robert Mearns 2010-07-06 09:40:14

selon ce que vous essayez de réaliser, vous pouvez également "contrôler" Excel via (OLE) L'automatisation à partir d'une autre application telle que Access ou Word ou à partir de votre propre application écrite dans un autre environnement tel que Visual Basic (6). Il est également possible d'y parvenir via .Net en utilisant la langue de votre choix (bien que certaines soient plus faciles à implémenter que d'autres).

voulez-vous contrôler Excel à partir d'une application externe ou tout simplement déclencher une macro VBA dans un classeur existant à partir de l'extérieur?

encore une fois, selon votre intention, le classeur pourrait avoir une macro Auto Open qui pourrait être lancée conditionnelle basée sur une valeur externe (par exemple un fichier ini ou une valeur de base de données).

0
répondu Marcus from London 2010-07-06 15:43:25

je peux penser à plusieurs façons de le faire.

You can start excel by creating a file with NotePad or a similar text editor.

Here are some steps:

    Launch NotePad
    Add the following line of text. Replace test.xlsm with the name and path for your file:
    start Excel.exe "C\test.xlsm"
    Save the file as "Test.bat". 
    Run the batch file.
    The batch file should launch Excel and then open your file. The code in your workbook should run

ou

encore une fois, en utilisant le bloc-notes.

Option Explicit

On Error Resume Next

ExcelMacroExample

Sub ExcelMacroExample() 

  Dim xlApp 
  Dim xlBook 

  Set xlApp = CreateObject("Excel.Application") 
  Set xlBook = xlApp.Workbooks.Open("C:\MyWorkbook.xls", 0, True) 
  xlApp.Run "MyMacro"
  xlApp.Quit 

  Set xlBook = Nothing 
  Set xlApp = Nothing 

End Sub

Ou, ce.

'Code should be placed in a .vbs file
Set objExcel = CreateObject("Excel.Application")
objExcel.Application.Run "'C:\Users\Ryan\Desktop\Sales.xlsm'!SalesModule.SalesTotal"
objExcel.DisplayAlerts = False
objExcel.Application.Quit
Set objExcel = Nothing

maintenant, ce n'est pas 'une commande externe', mais le planificateur de tâches de Windows va faire un bon travail d'ouvrir ce fichier pour vous, et une fois qu'il est ouvert, vous pouvez exécuter un petit script comme celui que vous voyez ci-dessous.

Private Sub Workbook_Open()
   Call CommandButton1_Click
End Sub

https://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

0
répondu ryguy72 2017-08-16 02:12:18