1

I am building an energy system model that is using a combination of VBA and Python (Pyomo). I am using a small piece of VBA code to call a command line, which in turn uses Pyomo. This code is looping to execute a separate Pyomo optimisation for each day.

The code is working perfectly, apart from the message in the image below being triggered. When I step through the code slowly, the message seems to be triggered by the following line of code which is calling a command line:

        Call Shell("cmd.exe /S /c" & "pyomo solve --solver=glpk " & Pyomo_file & " " & DAT_file & " --save-results " & Results_file, vbHide)

I have also tried to run this with the string being simplified down into a single string variable, which I called "Command", but the message below was still triggered.

Image of message box

The hyperlink in the message box (https://support.microsoft.com/en-us/office/malicious-macros-were-found-9e461c61-69d1-4ea9-a386-9ad0deaccfdd?ns=excel&version=90&syslcid=1033&uilcid=1033&appver=zxl900&helpid=56779&ui=en-us&rs=en-us&ad=us) suggests that this issue is triggered by AMSI and that my computer thinks this code is malicious. It is not - it is doing exactly what I want it to!! Digging further I think (but may be wrong) that the virus checks are being triggered by the fact that this string is a combination of so many inputs - the virus checker thinks this is obfuscation.

A few further points:

  • This line of code is within the daily loop I mentioned above. The error does not get triggered until the loop has already happily executed this line >30 times.
  • Bizarrely it seems to get thrown out on the same date each time I try to run the loop. If I skip that date, it falls over again at a later date...
  • I have set my macro security settings to "enable all macros" and this still happens. I only have the one Office 365 licence in my organisation (my own company) so I don't think there can be any odd admin permissions causing this problem.
  • Finally, I have tried to define the folders I am using as 'safe locations' and this doesn't help either.

Ideally, I would like to just disable the AMSI software while this command line is being executed. But I don't know how to do this of whether it is even possible. If not, any alternative ideas?!

braX
  • 11,506
  • 5
  • 20
  • 33

1 Answers1

0

I tried to run the MpCmdRun.exe script suggested by MS in this post, and it seems to have worked. It's possible that is just fluke, but it is working for now! Fingers crossed!