2016-03-16 1 views
1

J'ai un code macro dans un fichier Excel et j'appelle cette macro en utilisant un code python mais chaque fois que j'appelle ce code, il me donne popup (ci-dessous) que je veux éviter car le code est exécuté à partir de la machine distante et la fenêtre contextuelle du fichier Excel n'est pas accessible à l'utilisateur.Comment arrêter pop lors de l'appel de macro à partir de python

code:

import win32com.client 
def insert_column(): 
     fName= 'F:\\Reports\\Logs\\PERF_RESULTS.xlsm' 
     xlApp = win32com.client.Dispatch("Excel.Application") 
     fTest = xlApp.Workbooks.Open(fName,ReadOnly=1) 
     macName = fTest.Name + '!' +'Insert_Column' 
     xlApp.Application.Run(macName) 
     xlApp.Application.Save() 
     xlApp.Application.Quit() 
     xlApp = None 

Popup image

+0

Vous ne savez pas exactement comment le faire à partir de Python, mais dans Excel VBA vous utiliseriez 'Application.DisplayAlerts = False' avant le' Open' pour supprimer ces popups. –

+0

@JohnColeman Cela a résolu mon problème, vous devriez le poster comme une réponse :) – siddhu619

Répondre

1

L'objet Excel Application possède une propriété DisplayAlerts qui peut être égal à False. Je ne suis pas sûr de la syntaxe exacte que vous utilisez à l'appeler à partir de Python, mais quelque chose comme

xlApp.DisplayAlerts = False 

avant la ligne

fTest = xlApp.Workbooks.Open(fName,ReadOnly=1) 

devrait supprimer cette pop-up.

+0

xlApp.DisplayAlerts = Faux ne fonctionnera pas pour les erreurs d'exécution –

+0

@RiteshKarwa Cela semble un peu mystérieux. Quelque chose a dû changer, mais juste ce qui pourrait être difficile à traquer. Savez-vous quelle ligne déclenche le pop-up? Est-ce le 'Application.Run()' ou le 'Application.Save()'? Vous pouvez essayer de déplacer '.Save()' depuis l'objet 'Application' vers l'objet classeur et peut-être d'utiliser' SaveAs() 'plutôt que' Save' (voir ceci: http://stackoverflow.com/q/14634453/4996248). Cela fait plus d'un an. Vous pouvez soit éditer cette question ou poser une nouvelle question sur la raison pour laquelle quelque chose qui a fonctionné pendant un an a soudainement cessé de fonctionner. –

+0

yup est le Application.Run() et ainsi le programme python reste coincé jusqu'à ce que je ferme la fenêtre d'erreur –