He aprendido a leer y escribir un archivo Excel usando un programa Java con la ayuda de Jxl y POI API. ¿Es posible ejecutar un programa Java con la ayuda de macros?Microsoft Excel Macro para ejecutar el programa Java
Respuesta
Sí, es posible.
De hecho, existen muchas maneras y espero que te gusten mis ejemplos.
Para demostrar esto, creo un programa donde se envía un poco de texto como argumentos y el programa responde con una versión alterada del mismo. Hice un bote ejecutable. El primer ejemplo lee el argumento de args y otro de la entrada estándar.
Archivo Hello.java y H1.jar:
public class Hello {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Hello");
if (args.length > 0)
sb.append(' ').append(args[0]);
System.out.println(sb.append('.').toString());
}
}
Archivo Hello2.java y H2.jar:
import java.util.Scanner;
public class Hello2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder("Hello");
sb.append(' ').append(sc.nextLine());
System.out.println(sb.append('.').toString());
}
}
puede guardarlos en una solo jar, pero luego necesitas crear y use a manifest (eso es un poco exagerado).
Ahora, en Excel, agrego un módulo y una referencia al Objeto de host de Windows Script. Si no te gusta el sleep
, a continuación, se puede reemplazar con DoEvents
:
'add a reference to Windows Script Host Object Model
'for example : Tools-References
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub RunSleep(_
exec As WshExec, _
Optional timeSegment As Long = 20 _
)
Do While exec.Status = WshRunning
Sleep timeSegment
Loop
End Sub
Private Function RunProgram(_
program As String, _
Optional command As String = "" _
) As WshExec
Dim wsh As New WshShell
Dim exec As WshExec
Set exec = wsh.exec(program)
Call exec.StdIn.WriteLine(command)
Call RunSleep(exec)
Set RunProgram = exec
End Function
Y para probarlo me salvó los archivos a c:\
unidad y utiliza el código:
Public Sub Run()
Dim program As WshExec
Set program = RunProgram("java -jar ""C:\\H1.jar"" Margus")
Debug.Print "STDOUT: " & program.StdOut.ReadAll
Set program = RunProgram("java -jar ""C:\\H2.jar", "Margus")
Debug.Print "STDOUT: " & program.StdOut.ReadAll
End Sub
En mi caso obtener una respuesta de:
STDOUT: Hola Margus.
STDOUT: Hola Margus.
Si has encontrado este útil, no se olvide de upvote: D
Tenga en cuenta que la variable ** programa ** contiene información útil adicional, como flujo de error y código de retorno. – Margus
@sreehari Mi duda es que he escrito un programa que lee los datos de las celdas de un archivo Excel ya existente y lo procesa y lo vuelve a poner en el mismo archivo. No soy nuevo en Java pero definitivamente soy nuevo en marcos de Excel. ¿Necesito escribir una macro? No tengo idea al respecto y los tutoriales no te dan ninguna información. Entonces, ¿cómo se puede hacer? –
Para abrir el entorno de VBA en Excel, puede usar "alt + f11". Otra forma sería usar el botón Visual Basic de la cinta del desarrollador. Excel tiene páginas de códigos para cada hoja, pero el Módulo es como un espacio compartido. Tenga en cuenta que puedo usar el comando ** java -jar "C: \ H1.jar" Margus ** para ejecutar el programa en CMD - hay muy poco código que deba escribirse. – Margus
Su VBA puede escribir la salida en un archivo y Java puede sondear periódicamente las modificaciones de archivos y leer desde el archivo. Y vuelva a escribir los datos en VBA a través de otro archivo. VBA: la integración con Java es casi imposible, a menos que solo desee activar un programa Java desde el shell a través de System.execute (...).
No es cierto. La integración de VBA-Java está lejos de ser imposible.Hace un tiempo, existía incluso el antiguo puente Sun Java ActiveX Bridge, que lamentablemente ha sido interrumpido por Oracle (todavía disponible para Java 1.4: http://docs.oracle.com/javase/1.4.2/docs/guide/beans/ axbridge/developerguide /). Pero todavía hay tecnologías disponibles. Obba http://www.obba.info puede usarse desde VBA. También se podría usar xlloop. –
Lo he utilizado .. Atención, utiliza javaw otra manera una ventana negro está surgiendo
Dim result As String
Dim commandstr As String
commandstr = "javaw -jar somejar someparameter"
' try with or without cast to string
result = CStr(shellRun(commandstr))
'somewhere from SO but forget.. sorry for missing credits
Public Function ShellRun(sCmd As String) As String
'Run a shell command, returning the output as a string'
Dim oShell As Object
Set oShell = CreateObject("WScript.Shell")
'run command'
Dim oExec As Object
Dim oOutput As Object
Set oExec = oShell.exec(sCmd)
Set oOutput = oExec.StdOut
'handle the results as they are written to and read from the StdOut object'
Dim s As String
Dim sLine As String
While Not oOutput.AtEndOfStream
sLine = oOutput.ReadLine
If sLine <> "" Then s = s & sLine & vbCrLf
Wend
ShellRun = s
End Function
La pregunta era escribir un programa Java – user7294900
gracias por el comentario, pero la pregunta era '¿Es posible ejecutar un programa Java con la ayuda de macros?' y esta solución lo hace sin el método del sueño, así como apunté a javaw en lugar de java – mschwehl
- 1. Hacer un comando de "macro" para ejecutar un programa
- 2. Excel VBA - Ejecutar macro antes de guardar
- 3. Macro independiente de Excel
- 4. ¿Cómo encontrar el tiempo necesario para ejecutar el programa Java?
- 5. Microsoft Word Macro para resaltar varias palabras
- 6. Ejecutar Excel Macro desde fuera de Excel mediante VBScript desde la línea de comandos
- 7. Ejecutar programa externo desde Java
- 8. Crear un script de shell para ejecutar el programa Java
- 9. Ejecutar un programa Java de nuestro programa Java
- 10. macro para Ocultar filas en excel 2010
- 11. Cómo se puede ejecutar una macro de Excel a través de una tarea de programación
- 12. Cómo ejecutar el programa Java en el símbolo del sistema
- 13. Adobe AIR para ejecutar el programa
- 14. vacío "liberar" ASSERT macro bloquea el programa?
- 15. ¿Cómo ejecutar un programa Java desde C#?
- 16. macro de VBA en Excel para ejecutar la declaración Insertar SQL
- 17. Microsoft Interop: Excel Column Names
- 18. NoClassDefFoundError al ejecutar un programa usando AWS SDK para java
- 19. Ejecutar archivo .jar desde un programa Java
- 20. cómo compilar y ejecutar el programa java en otro programa java?
- 21. ¿Tiene alguna macro recomendada para Microsoft Visual Studio?
- 22. 400 de error de Excel Macro
- 23. ¿Cómo ejecutar testcase externo (Class, junit) en el programa java?
- 24. ¿Cómo ejecutar el programa Java y obtener resultados en PHP?
- 25. Java ejecutar el programa de línea de comando
- 26. ¿Podemos escribir una macro en C# para Excel
- 27. cómo enmascarar excel código de macro
- 28. microsoft xml excel - formato de fila
- 29. cabecera http para descargar archivos de Microsoft Word y Excel
- 30. Archivo de Excel y estructura del programa
Comprobar esto - [http://stackoverflow.com/questions/5297341/calling-java-library-jar-from-vba-vbscript-visual-basic-classic][1] [1]: http: // stackoverflow.com/questions/5297341/calling-java-library -jar-de-vba-vbscript-visual-basic-classic – sreehari
Todas esas discusiones dicen que no es posible. –
¿Qué tal esto? http://stackoverflow.com/questions/10879757/vba-shell-java-call-errors – JimmyPena