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?
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é.
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).
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