Ejecutando .exe usando vba -- python campo con excel campo con exe campo con vba camp Relacionados El problema

Running .exe using VBA


2
vote

problema

Español

Así que creé un archivo .exe (tlsolver.exe) para ejecutar usando VBA (tlsolver.xlsm). Cuando inicie el .exe, ejecuta algunos cálculos, escupe un archivo CSV y luego utilizo VBA para copiar los datos en mi hoja de Excel.

Este es el código VBA que estoy usando:

  react-final-form2  

Cuando ejecuto la macro, la ventana de la consola aparece como debería y luego se cierra rápidamente. Logré ver este error antes de que se cierre:

  react-final-form3  

Sé que el .exe funciona perfectamente bien cuando me doblemente en el archivo regularmente, así que me siento inclinado a pensar que estoy arruinando algo tonto en la VBA.

¡Cualquier ayuda apreciada!

Editar: Sé que el Sub está etiquetado como StartExEwithargument, pero no se requiere ningún argumento, simplemente haga clic y ejecute.

Original en ingles

So I created an .exe file (tlsolver.exe) to run using VBA (TLSolver.xlsm). When I launch the .exe, it runs some calculations, spits out a csv file, and then I use VBA to copy that data onto my excel sheet.

This is the VBA code I am using:

Public Sub StartExeWithArgument()     Dim strProgramName As String      ActiveWorkbook.Save     strProgramName = "C:\Users\My.Name\Desktop\Python\Tagless\tlsolver.exe"      Call Shell("""" & strProgramName & """", vbNormalFocus) End Sub 

When I run the macro, the console window pops up as it should and then quickly closes. I managed to see this error before it closes:

IOError: [Errno 2] No such file or directory: 'TLSolver.xlsm' 

I know that the .exe works perfectly fine when I doubleclick on the file regularly, so I am inclined to think that I am messing up something silly in the VBA.

Any help appreciated!

Edit: I know the sub is labeled as StartExeWithArgument, but there is no argument required, simply click and run.

           
     
     

Lista de respuestas

4
 
vote
vote
La mejor respuesta
 

El comando Shell está ejecutando correctamente. El <input/>3 lanza y luego busca el archivo <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" indent="yes" /> <xsl:template match="/"> <results> <xsl:apply-templates select="/results/node"/> </results> </xsl:template> <xsl:template match="/results/node"> <!-- We generate a string of decending @value numbers; Each number covers exactly 5 characters (spaces are added if there are less than 5 digits) --> <xsl:variable name="sortedValues"> <xsl:for-each select="node"> <xsl:sort select="@value" data-type="number" order="descending"/> <!-- Here we add spaces and strip everything that exceeds 5 characters --> <xsl:value-of select="substring(concat(@value,' '),1,5)"/> </xsl:for-each> </xsl:variable> <!-- Now, we get the 3rd number, which covers characters 11 to 15; So that we get a meaningful result if there were less than three numbers, we add two trailing zeroes --> <xsl:variable name="limitValue" select="substring(concat($sortedValues,'0 0'),11,5)"/> <provincie> <xsl:copy-of select="@id|@name"/> <xsl:apply-templates select="node[@value &gt;= $limitValue]"/> </provincie> </xsl:template> <xsl:template match="results/node/node"> <gemeente> <xsl:copy-of select="@id|@name|@value"/> </gemeente> </xsl:template> </xsl:stylesheet> 14 en la ruta actual. Lo que está sucediendo es que no puede encontrar el <input/>5 en el directorio actual y, por lo tanto, el error <input/>6

Tres sugerencias en tal caso.

  1. Cambiar el directorio en VBA usando <input/>7 al directorio donde reside el archivo de Excel y luego inicie el EXE o

  2. Coloque ambos archivos en el mismo directorio. o

  3. Reescribe el código EXE de Python ( Esto cae de mi experiencia, así que no puede ayudarlo aquí ) para solicitar al usuario que seleccione el archivo de Excel.

parte de VBA (sugerencia 1)

  <input/>8  
 

The shell command is executing correctly. The exe launches and then looks for the .xlsm file in the current path. What is happening is that it is not able to find the TLSolver.xlsm in the current directory and hence the error IOError: [Errno 2] No such file or directory: 'TLSolver.xlsm'

Three suggestions in such a case.

  1. Change the directory in VBA using ChDir to the directory where the excel file resides and then launch the exe OR

  2. Place both files in the same directory. OR

  3. Rewrite the python exe code (This falls out of my expertise so can't help you here) to prompt the user to select the excel file.

VBA PART (Suggestion 1)

Public Sub StartExeWithArgument()     Dim strProgramName As String     Dim xlFilePath As String      '~~> Path of the excel file. Change as applicable     xlFilePath = "C:\Temp"      ActiveWorkbook.Save      '~~> Change directory     ChDir xlFilePath      strProgramName = "C:\Users\My.Name\Desktop\Python\Tagless\tlsolver.exe"      Call Shell("""" & strProgramName & """", vbNormalFocus) End Sub 
 
 
         
         

Relacionados problema

3  ¿Cómo creo una solicitud ejecutable para un procedimiento macro de Excel?  ( How do i create an executable application for a excel macro procedure ) 
Tengo dos hojas de cálculo ("antiguo" y "nuevo") y una macro de script vb. La macro se ejecuta en uno ("nuevo"), hace una comparación de los contenidos de la ...

1  ¿Llamar a SSL habilitado servicios de MSEXCEL?  ( Calling ssl enabled services from msexcel ) 
Tengo servicio web desplegado en Web Sphere y este servicio es SSL habilitado. Tengo que llamar a este servicio de MS Excel. Estoy usando mssoaplib.SoapClient...

0  Excel Macro Runtime Error 428 en Excel 2003  ( Excel macro runtime error 428 in excel 2003 ) 
He creado una plantilla XLT Excel que funciona bien en Excel 2007 en el modo de compatibilidad y no muestra errores en la comprobación de compatibilidad. La p...

3  Acelerar una macro de Excel?  ( Speed up an excel macro ) 
En este momento tengo una macro PopulateYearlyValues , pero me parece que está tomando demasiado tiempo Sub PopulateYearlyValues(ByVal Month As Range) ...

0  Regresando C # listas de un servicio web a Excel VBA  ( Returning c sharp lists from a web service to excel vba ) 
Este es un largo - disculpas ... ¿Hay una forma confiable de devolución de listas de C # a VBA a través de un servicio web? Tengo un servicio web que de...

0  Cómo seleccionar un subconjunto de una tabla con Excel VBA en la forma de seleccionar -> desde -> donde  ( How to select a subset of a table with excel vba in the manner of select from ) 
Disculpas es esta es la pregunta clásica de Newbie, pero no he podido encontrar una respuesta concreta. Soy completamente nuevo para Excel VBA y de programa...

2  Cómo crear la tabla de contenidos (TOC) a través de Macro  ( How to create table of contents toc via macro ) 
Necesito crear la tabla de contenidos después de Mailmerge por Macro, ya que Word no admite la actualización del campo TOC de los campos TC. ¿Es posible aut...

3  ¿Cuáles son los consentimientos y los contras de las matrices pasadas contra las matrices globales en Excel VBA?  ( What are pros cons of passed arrays vs global arrays in excel vba ) 
OK, 2do intento de escribir una pregunta de desbordamiento de una pila, así que perdóname si esto parece familiar. Estoy reescribiendo una macro de Excel qu...

1  Llamando a una función complementaria desde VBA de Excel  ( Calling a add in function from excels vba ) 
Estoy usando un complemento de Excel para un Erlangs: http://abstractmicro.com/erlang/helppages/ref-erlbblockage.htm Intento llamar a la función ERLANG-B d...

3  Añadiendo DataPoint a Excel Chart con VBA  ( Adding datapoint to excel chart with vba ) 
Tengo un objeto de carta, con 3 series. La serie está obteniendo los valores Y de los rangos C1: C10, D1: D10 y E1: E10. El valor depende de los valores en A1...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos