Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Exécuter un script python depuis vba

ivan27

XLDnaute Occasionnel
Bonjour à tous,
Je suis sous windows 11 pro
Sur mon bureau j'ai un répertoire "dev" avec à l'intérieur, un petit script python "compteur.py".
Si j'exécute directement le fichier, soit par double clics soit depuis une console le code fonctionne bien.
A présent j'aimerais exécuter ce code depuis vba excel. J'ai essayé plusieurs méthodes mais impossible d'exécuter mon script python depuis VBA.
Je n'ai pas d'erreur et je ne sais plus où chercher.

VB:
Sub ExecutePython()
    Dim objShell As Object
    Set objShell = VBA.CreateObject("Wscript.Shell")
    
    Dim PythonExePath As String
    PythonExePath = """C:\Users\it1\AppData\Local\Programs\Python\Python312\python.exe"""
    
    Dim PythonScriptPath As String
    PythonScriptPath = """C:\Users\it1\Desktop\dev\compteur.py"""
    
    objShell.Run PythonExePath & " " & PythonScriptPath, 0, True
End Sub

Merci d'avance pour votre aide
Ivan
 

ivan27

XLDnaute Occasionnel
Rebonjour le forum, jurassic pork,
Ca ne fonctionne pas, quel que soit le code python utilisé.
Voici par exemple un code tous simple qui écrit les valeurs de 3 variables dans un fichier "output.txt".

Python:
from datetime import datetime
import traceback

try:   
    now = datetime.now()

    year_second_digit = str(now.year)[-1] 
    month_second_digit = str(now.month)[-1] 

    ID = f"Z{year_second_digit}{month_second_digit}{now.strftime('%d%H%M%S')}{int(now.microsecond / 1000):03d}"
    DTE = now.strftime('%y%m%d')
    HRE = now.strftime('%H%M')

    with open('output.txt', 'w') as file:       
        file.write(f"{ID}\n")
        file.write(f"{DTE}\n")
        file.write(f"{HRE}\n")

except Exception as e:
    with open('error_log.txt', 'w') as error_file:
        error_file.write(str(e))
        error_file.write('\n')
        error_file.write(traceback.format_exc())
 

wDog66

XLDnaute Occasionnel
Bonjour ivan27, jurassic

Et avec ce genre de code
VB:
Sub RunPythonScript()
    Dim pythonExecutable As String
    Dim scriptPath As String
    Dim command As String    
    ' Spécifiez le chemin de l'exécutable Python
    pythonExecutable = "C:\Path\To\Python\python.exe"
    ' Spécifiez le chemin du script Python
    scriptPath = "C:\Path\To\Your\Script\script.py"
    ' Construire la commande
    command = pythonExecutable & " " & scriptPath
    ' Exécuter la commande
    Shell command, vbNormalFocus
End Sub

A+
 

jurassic pork

XLDnaute Occasionnel
Hello,
chez moi cela fonctionne mais le fichier output.txt se retrouve dans le répertoire Documents de l'utilisateur en cours : il serait préférable de mettre un chemin complet pour les fichiers de sortie.
Ami calmant, J.P
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…