JxlとPOI APIの助けを借りてJavaプログラムを使用してExcelファイルを読み書きする方法を学びました。マクロの助けを借りてJavaプログラムを実行することは可能ですか?Javaプログラムを実行するMicrosoft Excelマクロ
答えて
はい、可能です。
実際にはかなりの方法があり、私の例が好きであれば幸いです。
これを実証するために、いくつかのテキストが引数として送信され、プログラムが変更されたバージョンで応答するプログラムを作成します。私はそれを実行可能な瓶を作った。最初の例は、argsなどの引数を標準入力から読み込みます。
ファイルHello.javaと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());
}
}
ファイルHello2.javaと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());
}
}
あなたがそれらを保存することができます単一のjarですが、次に作成する必要があります。use a manifest(これは少し過剰です)。
今ExcelでモジュールとWindows Script Host Objectへの参照を追加します。あなたがsleep
が気に入らない場合、あなたは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
をし、それをテストするために、私はc:\
ドライブにファイルを保存し、コードを使用しました。私の場合は
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
I応答を得る:
STDOUT:こんにちはMargus。
STDOUT:こんにちはMargus。
あなたはこれが有用であることが判明した場合、upvoteすることを忘れないでください:私はそれを使用しましたD
変数** program **には、エラーストリームやリターンコードなどの有用な情報が追加されています。 – Margus
@sreehari私は、既存のExcelファイルからセルのデータを読み込んで処理し、同じファイルに戻すプログラムを作成しました。私はJavaには新しいものではありませんが、Excelのマルコスにとってはまったく新しいものです。マクロを書く必要がありますか?私はそれについての手がかりを持っていないし、チュートリアルはあなたに何か情報を与えていない。それでどうすればいいですか? –
ExcelでVBA環境を開くには、 "alt + f11"を使用します。別の方法は、開発者のリボンのVisual Basicボタンを使用することです。 Excelには各シートのコードページがありますが、Moduleは共有スペースのようです。 CMDでプログラムを実行するには、** java -jar "C:¥H1.jar" Margus **コマンドを使用できます。書き込む必要のあるコードはほとんどありません。 – Margus
VBAは出力をファイルに書き込むことができ、Javaはファイルの変更を定期的にポーリングしてファイルから読み込むことができます。また、別のファイルを介してVBAにデータを書き戻します。 VBA - Javaの統合は、シェルからSystem.execute(...)を介してJavaプログラムを起動しない限り不可能です。
本当ではありません。 VBAとJavaの統合は不可能ではありません。しばらく前には、残念なことにOracleによって廃止された良い古いSun Java ActiveX Bridgeもありました(まだJava 1.4でも利用可能です:http://docs.oracle.com/javase/1.4.2/docs/guide/beans/ axbridge/developerguide /)。しかし、まだ利用可能な技術があります。 Obba http://www.obba.infoはVBAから使用できます。また、xlloopを使用することもできます。 –
は...注意、それ以外の場合は黒いウィンドウがこの
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
質問はJavaプログラムを書くことでした – user7294900
コメントありがとうございましたが、質問は 'マクロの助けを借りてJavaプログラムを実行できますか?この解決法はsleepメソッドを使わず、javaの代わりにjavawを指摘しています – mschwehl
- 1. マクロ実行ドロップダウンリストExcel
- 2. ExcelでSQLクエリを実行するマクロ
- 3. Microsoft Graphでマクロを実行中
- 4. Excelマクロ:実行時エラー1004
- 5. Excel実行マクロのVBA
- 6. COMオートメーション/ Excelマクロの実行
- 7. ExcelでVBAマクロを実行してSQL文を実行する
- 8. OutlookでExcelマクロを実行する:実行時エラー '-2147417851(80010105)'
- 9. ExcelマクロをインポートしてVBSで実行
- 10. マクロを実行するマクロ
- 11. マクロExcel:アクティブな行だけを実行する
- 12. Microsoft Wordでマクロを相次いで実行しています
- 13. java - プログラムの実行
- 14. Javaプログラムの実行
- 15. スケジュールタスクを通じてExcelマクロを実行する方法
- 16. アクセスを開かずにExcelからマクロを実行する
- 17. Excelを起動してマクロを実行するVBSスクリプト
- 18. 別のJavaプログラムの中でJavaプログラムを実行する方法
- 19. セルをプログラムで変更するとマクロが実行される
- 20. ExcelマクロでAS400クエリの出力を実行する
- 21. Excelマクロを強制的に実行する
- 22. マクロ実行中にExcelを停止するには?
- 23. excelの外でvbaマクロを実行する方法
- 24. Excel VBA - 保存する前にマクロを実行
- 25. Excel VBA - モジュール内でマクロを実行する方法
- 26. ExcelマクロからSAP GUIスクリプトを実行する方法
- 27. マクロを実行するパラメータを使用してJava FXからMicrosoft Wordを起動する方法
- 28. JenkinsでJavaプログラムを実行
- 29. バックエンドでjavaプログラムを実行
- 30. ANTをJavaでプログラムで実行する
チェックをポップアップさjavawを使用します - [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
これらの議論はすべて不可能であると伝えています。 –
これはいかがですか? http://stackoverflow.com/questions/10879757/vba-shell-java-call-errors – JimmyPena