Rechercher : dans
Par :

Lancer une macro excel en VB

Dernière réponse le 9 jun 2009 à 16:22:56 Clic44, le 9 jun 2009 à 14:35:54 
 Signaler ce message aux modérateurs

Bonjour,

J'essaye de trouver un moyen pour lancer une macro excel après ouverture des fichiers en rapport avec cette macro. Je commence par :

Function Mise_A_Jour_Totale(ByVal parametre As String)
Process.Start("EXCEL.exe", parametre)
Process.Start("EXCEL.exe", "C:\toto.xls")
Process.Start("EXCEL.exe", "C:\tata.xls")
End Function

Pour ouvrir mes trois fichiers, dont un est un parametre donné en entrée de ma fonction. D'ailleurs si il y a un moyen d'appliquer Process.Start à plusieurs fichiers d'un coup je suis preneur. Maintenant que dois-je faire pour lancer ma macro excel à partir de mon script ?

Merci pour vos réponses.

Meilleures réponses pour « Lancer une macro excel en VB » dans :
Exécuter une macro VoirExécuter une macro Excel et Calc proposent plusieurs façons d’exécuter une macro : en la sélectionnant dans une liste, dans la boîte de dialogue Macro ; par un raccourci clavier ; en l’attachant à un bouton de la barre d’outils ; ...

1

Clic44, le 9 jun 2009 à 15:40:26

J'essaye depuis une bonne heure d'ouvrir mes fichiers excel autrement, mais pas une seule méthode que j'essaye ne marche :

Dim oXL As Excel.Application
Dim oBook As Excel.Workbook
Dim oSheet As Excel.Worksheet

' Create a new instance of Excel and make it visible.
oXL = CreateObject("Excel.Application")
oXL.Visible = True

' Add a new workbook and set a reference to Sheet1.
oBook = oXL.Workbooks.Add
oSheet = oBook.Sheets(1)

est la méthode de base tirée depuis le site microsoft, cependant j'ai toujours un message d'erreur sur la ligne
oBook = oXL.Workbooks.Add
qui me dit Member not found. (Exception from HRESULT: 0x80020003 (DISP_E_MEMBERNOTFOUND))

Répondre à Clic44

2

Polux31, le 9 jun 2009 à 15:45:19

Bonjour,

Pense à mettre Set devant tes objets:

Set oXL = CreateObject("Excel.Application") 
oXL.Visible = True 

Set oBook = oXL.Workbooks.Add 
Set oSheet = oBook.Sheets(1) 


N'est-il pas plus simple de faire :

Function Mise_A_Jour_Totale(ByVal parametre As String)
Dim mWk1 as Workbook
Dim mWk2 as Workbook
Dim mWk3 as Workbook

Set mWk1 = Workbooks.Open(parametre)
Set mWk2 = Workbooks.Open("C:\Toto.xls")
Set mWk2 = Workbooks.Open("C:\Tata.xls")

'etc ...


;o) «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

3

Clic44, le 9 jun 2009 à 15:52:06

Merci Polux31 de me soutenir,

Pour Set, VB 2008 les supprime automatiquement, ce n'est pas faut d'avoir essayé.

Quand j'essaye ton code, le code me renvoie une erreur à l'appel de Workbooks.Open en me disant Reference to a non-shared member requires an object reference.

Répondre à Clic44

4

Polux31, le 9 jun 2009 à 16:02:13

Ah ben !!! il aurait peut être été bon de le préciser ... ma boule de crystal est déjà partie en vacances, vois-tu.

«Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

5

Clic44, le 9 jun 2009 à 16:11:16

Désolé... elle est partie où sinon, je suis pas contre aller la rejoindre, moi je lutte toujours je n'arrive à rien :s

Répondre à Clic44

6

 Clic44, le 9 jun 2009 à 16:22:56

Bon j'ai lutté mais j'y suis peut etre... je dis bien peut etre... presque arrivé (par peut etre, il faut encore que je compile tout ca, que j'exécute mes macros, et que ca marche avec les PC de ma boite):

Dim CurrentCI As System.Globalization.CultureInfo
CurrentCI = System.Threading.Thread.CurrentThread.CurrentCulture
System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("en-US")

Dim AppExcel As Application
Dim wsheet As Worksheet
Dim wbook As Workbook

AppExcel = New Microsoft.Office.Interop.Excel.Application
AppExcel.Visible = True

wbook = AppExcel.Workbooks.Open("C:\METEOVENTE\Donnees_brutes\Macros.xls")

System.Threading.Thread.CurrentThread.CurrentCulture = CurrentCI

Répondre à Clic44
Collection CommentÇaMarche.net