Lancer macro vba à partir de vb.net dans un classeur excel déjà ouvert .....
imran_6144
Messages postés15Date d'inscriptionjeudi 19 septembre 2019StatutMembreDernière intervention29 septembre 2019
-
23 sept. 2019 à 17:34
imran_6144
Messages postés15Date d'inscriptionjeudi 19 septembre 2019StatutMembreDernière intervention29 septembre 2019
-
29 sept. 2019 à 08:41
Bonjour,
Je travail avec vb.net.
Je lance à partir de vb.net en"run" une macro VBA dans 1 classeur fermé (nommé "PREMIERE"):
ApExcel.Run("PREMIERE.xlsm!Module1.ESSAI").
Ça fonctionne impeccable puisque la macro s’exécute (en ouvrant le classeur). C'est pourquoi il faut qu'il soit fermé avant. Si il n'est pas fermé avant, le code l'ouvre en lecture seule...
Or, je voudrais l’exécuter dans le classeur déjà ouvert!!!!!
(j'ai essayé un certain nombre de choses.........)
Précision:
Voilà comment j'ouvre et travaille dans ce classeur (avant....)
Dim ApExcel As New Excel.Application
Wk2 = ApExcel.Workbooks.Open("C:\Users\Machin\Documents\PREMIERE.xlsm")
Si une âme charitable prends peine, merci d'avance
imran_6144
Messages postés15Date d'inscriptionjeudi 19 septembre 2019StatutMembreDernière intervention29 septembre 2019 23 sept. 2019 à 18:55
Merci,
Mais le code proposé ouvre également le classeur....donc en lecture seule aussi....
si il est déjà ouvert....
Je cherche le code qui ne ferait que lancer la macro....sans ouvrir le classeur.....
cs_Le Pivert
Messages postés7899Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention21 septembre 2023137 Modifié le 24 sept. 2019 à 08:01
et si tu ne mets que cela:
Dim ApExcel As New Excel.Application
ApExcel.Run("PREMIERE.xlsm!Module1.ESSAI")
imran_6144
Messages postés15Date d'inscriptionjeudi 19 septembre 2019StatutMembreDernière intervention29 septembre 2019 24 sept. 2019 à 11:22
Bonjour,
D'abord merci, mais le problème demeure.....
C'est exactement ce que je mets.
Mais c'est une ouverture de fichier, puisqu'il l'ouvre en lecture seule.
J'ouvre le fichier avant dans le "load" de mon form ainsi:
Wk2 = ApExcel.Workbooks.Open("C:\Users\Machin\Documents\PREMIERE.xlsm")
Peu importe la façon dont j'ouvre le fichier avant.
Une chose est sure, c'est que la ligne de commande que tu suggère et que j'utilise déjà:
ApExcel.Run("PREMIERE.xlsm!Module1.ESSAI")
Fonctionne parfaitement quand le fichier est fermé.
C'est mon drame du moment car je vais avoir d'autre sub VBA à piloter dans différents Evénements de mon code VB.NET.
Je ne peux pas les transcrire en VB.NET pour l'instant.
Je suis convaincu que si il lance bien la macro VBA dans le fichier fermé, il faut juste qu'il sache que le fichier est déjà ouvert.
Je sais que de sub vba à sub vba si tu fais un application.run, il ne cherche pas à réouvrir le classeur de destination.
Je vais faire des recherches vers le Get(objetcs,......
Si tu as quelque chose, je te congratule d'avance
cs_Le Pivert
Messages postés7899Date d'inscriptionjeudi 13 septembre 2007StatutContributeurDernière intervention21 septembre 2023137 24 sept. 2019 à 16:17
Essaie cela:
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
'Créer une instance de Excel
Dim ApExcel As New Excel.Application
Dim wbExcel As New Excel.Worksheet
'Ouvrir un classeur
ApExcel.Workbooks.Open("C:\Users\LePivert\Documents\Classeur1.xlsm")'a adapter
'rendre le classeur visible
ApExcel.Visible = True
End Sub
Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
'Créer une instance de Excel
Dim ApExcel As New Excel.Application
Dim wbExcel As New Excel.Worksheet
ApExcel.DisplayAlerts = False
ApExcel.Workbooks.OpenText("C:\Users\LePivert\Documents\Classeur1.xlsm")'a adapter
ApExcel.Run("Classeur1.xlsm!Module1.essai")'a adapter
ApExcel.DisplayAlerts = True
ApExcel.Workbooks.Close() 'on ferme le classeur
ApExcel.Visible = False
ApExcel.Quit() 'on ferme Excel
End Sub
Voilà
@+ Le Pivert
imran_6144
Messages postés15Date d'inscriptionjeudi 19 septembre 2019StatutMembreDernière intervention29 septembre 2019 24 sept. 2019 à 17:16
23 sept. 2019 à 18:55
Mais le code proposé ouvre également le classeur....donc en lecture seule aussi....
si il est déjà ouvert....
Je cherche le code qui ne ferait que lancer la macro....sans ouvrir le classeur.....
Modifié le 24 sept. 2019 à 08:01
24 sept. 2019 à 11:22
D'abord merci, mais le problème demeure.....
C'est exactement ce que je mets.
Mais c'est une ouverture de fichier, puisqu'il l'ouvre en lecture seule.
J'ouvre le fichier avant dans le "load" de mon form ainsi:
Wk2 = ApExcel.Workbooks.Open("C:\Users\Machin\Documents\PREMIERE.xlsm")
Peu importe la façon dont j'ouvre le fichier avant.
Une chose est sure, c'est que la ligne de commande que tu suggère et que j'utilise déjà:
ApExcel.Run("PREMIERE.xlsm!Module1.ESSAI")
Fonctionne parfaitement quand le fichier est fermé.
C'est mon drame du moment car je vais avoir d'autre sub VBA à piloter dans différents Evénements de mon code VB.NET.
Je ne peux pas les transcrire en VB.NET pour l'instant.
Je suis convaincu que si il lance bien la macro VBA dans le fichier fermé, il faut juste qu'il sache que le fichier est déjà ouvert.
Je sais que de sub vba à sub vba si tu fais un application.run, il ne cherche pas à réouvrir le classeur de destination.
Je vais faire des recherches vers le Get(objetcs,......
Si tu as quelque chose, je te congratule d'avance
24 sept. 2019 à 16:17
Voilà
@+ Le Pivert
24 sept. 2019 à 17:16