Tôi đã học cách đọc và viết một tệp Excel bằng cách sử dụng một chương trình Java với sự trợ giúp của API Jxl và POI. Có thể chạy một chương trình Java với sự trợ giúp của các macro không?Macro Microsoft Excel để chạy chương trình Java
Trả lời
Có, điều đó là có thể.
Có một vài cách thực sự và tôi hy vọng bạn thích ví dụ của tôi.
Để chứng minh điều này, tôi tạo một chương trình trong đó một số văn bản được gửi dưới dạng đối số và chương trình phản hồi bằng phiên bản thay đổi của nó. Tôi đã làm một cái lọ runnable của nó. Ví dụ đầu tiên đọc đối số từ args và khác từ đầu vào tiêu chuẩn.
file Hello.java và 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());
}
}
file Hello2.java và 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());
}
}
Bạn có thể lưu chúng trong một lọ duy nhất, nhưng sau đó bạn cần tạo và use a manifest (đó là một chút quá mức cần thiết).
Bây giờ trong Excel tôi thêm một mô-đun và tham chiếu đến đối tượng lưu trữ Windows Script. Nếu bạn không thích những sleep
, sau đó bạn có thể thay thế nó với 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
Và để kiểm tra nó tôi đã lưu các tập tin vào c:\
ổ đĩa và sử dụng mã:
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
Trong trường hợp của tôi, tôi nhận được phản hồi:
STDOUT: Xin chào Margus.
STDOUT: Xin chào Margus.
Nếu bạn thấy điều này hữu ích, đừng quên upvote: D
Lưu ý rằng chương trình ** biến ** chứa thông tin hữu ích bổ sung như luồng lỗi và mã trả về. – Margus
@sreehari Nghi ngờ của tôi là, tôi đã viết một chương trình đọc dữ liệu từ các ô từ một tệp Excel đã tồn tại và xử lý nó và đưa nó trở lại cùng một tệp. Tôi không phải là người mới đối với Java nhưng tôi chắc chắn là người mới đối với các marcos của Excel. Tôi có cần viết macro không? Tôi không có đầu mối về nó và các hướng dẫn không cung cấp cho bạn bất kỳ thông tin. Vậy làm thế nào nó có thể được thực hiện? –
Để mở môi trường VBA trong Excel, bạn có thể sử dụng "alt + f11". Cách thay thế sẽ là sử dụng nút phát triển Visual Basic ribbon. Excel có các trang mã cho mỗi trang tính, nhưng Mô-đun giống như một không gian dùng chung. Lưu ý, tôi có thể sử dụng lệnh ** java -jar "C: \ H1.jar" Margus ** để chạy chương trình trong CMD - có rất ít mã cần được viết. – Margus
VBA của bạn có thể ghi đầu ra vào một tệp và Java có thể thăm dò ý kiến để sửa đổi tệp định kỳ và đọc từ tệp. Và ghi dữ liệu trở lại VBA thông qua một tệp khác. VBA - Tích hợp Java là bên cạnh không thể trừ khi bạn chỉ muốn kích hoạt một chương trình Java từ trình bao thông qua System.execute (...).
Không đúng sự thật. Tích hợp VBA-Java là không thể.Một thời gian trước đây thậm chí còn có cả Sun Java ActiveX Bridge cũ, mà không may đã bị ngừng bởi Oracle (vẫn có sẵn cho Java 1.4: http://docs.oracle.com/javase/1.4.2/docs/guide/beans/ axbridge/developerguide /). Nhưng vẫn có những công nghệ sẵn có. Obba http://www.obba.info có thể được sử dụng từ VBA. Cũng có thể sử dụng xlloop. –
tôi đã sử dụng nó .. Chú ý, sử dụng javaw khác một cửa sổ đen popping lên
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
Câu hỏi đặt ra là viết một chương trình Java – user7294900
cảm ơn bạn đã bình luận nhưng câu hỏi là 'Có thể chạy chương trình Java với sự trợ giúp của macro không?' và giải pháp này làm điều đó mà không có phương pháp ngủ cũng như tôi chỉ vào javaw thay vì java – mschwehl
- 1. Cách thêm macro excel 2010 theo chương trình
- 2. Chạy chương trình java từ một chương trình java khác
- 3. Excel VBA - Chạy macro trước khi lưu
- 4. Macro VBA trong Excel để chạy câu lệnh Chèn SQL
- 5. Chạy Macro Excel qua C#: Chạy macro từ sổ làm việc này sang sổ làm việc khác?
- 6. Đứng một mình Excel Macro
- 7. Cách tìm thời gian để chạy chương trình java?
- 8. Tạo tập lệnh shell để chạy chương trình Java
- 9. Chương trình Java chạy "java myprog < input.txt > output.txt"
- 10. VBScript để Viết Macro trong một tệp Excel
- 11. Microsoft MPI không chạy
- 12. làm thế nào để biên dịch và chạy chương trình java trong một chương trình java khác?
- 13. Tại sao chương trình Java sử dụng tệp .bat làm trình chạy chương trình?
- 14. EXcel VBA: Excel Macro để tạo bảng trong PowerPoint
- 15. Tài liệu cho các macro Excel VBA
- 16. Chương trình GUI Java - Chương trình sơn
- 17. Chạy một chương trình Java nền trong Tomcat
- 18. Chương trình Java chạy ở chế độ nền
- 19. Microsoft Interop: Tên Cột Excel
- 20. Khi nhiều chương trình java chạy trên cùng một máy
- 21. Rỗng "phát hành" ASSERT macro tai nạn chương trình?
- 22. Microsoft C++ Macro được xác định trước
- 23. Kiểm tra đơn vị trên chương trình có nhiều macro
- 24. Thời gian chạy chương trình đang chạy
- 25. Làm cách nào bạn có thể chạy macro Excel thông qua tác vụ lịch biểu
- 26. Tạo tệp/xuất bản PHP Microsoft Excel
- 27. Macro Microsoft Word để làm nổi bật nhiều từ
- 28. Chuyển đổi macro Excel 4 thành VBA
- 29. Lấy tên chương trình Java
- 30. làm cách nào để mở TẤT CẢ các tệp excel từng cái một và chạy macro
Kiểm tra này - [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-from-vba-vbscript-visual-basic-classic – sreehari
Tất cả các cuộc thảo luận đều nói rằng điều đó là không thể. –
Làm thế nào về điều này? http://stackoverflow.com/questions/10879757/vba-shell-java-call-errors – JimmyPena