我每次收到特定电子邮件时都必须运行一些java代码。 我只是在电子邮件中下载附件,运行jar并回复执行该jar附件的响应。在Outlook中为特定电子邮件运行jar
是否有可能以某种方式自动执行此操作?
我已经检出了可以使用Outlook规则调用的VBA例程,但我不确定是否可以用此操作执行我的jar文件。
任何想法?
我每次收到特定电子邮件时都必须运行一些java代码。 我只是在电子邮件中下载附件,运行jar并回复执行该jar附件的响应。在Outlook中为特定电子邮件运行jar
是否有可能以某种方式自动执行此操作?
我已经检出了可以使用Outlook规则调用的VBA例程,但我不确定是否可以用此操作执行我的jar文件。
任何想法?
这里是结构,我会让你调整它!
您可以设置规则使用SaveToDiskAndReply
这是主程序。
在您的Outlook模块的起始粘贴此:
Option Explicit
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Sub RunSleep(_
exec As WshExec, _
Optional timeSegment As Long = 800 _
)
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
Public Function Run_Jar() As String
Dim program As WshExec
Dim value As String
'''Set the path (jar and log)
Set program = RunProgram("java -jar ""D:\\Demo.jar"" 8861ccd621")
DoEvents
Run_Jar = program.StdOut.ReadAll
End Function
,并使用由规则推出的脚本:
Public Sub SaveToDiskAndReply(ItM As Outlook.MailItem)
Dim oAttS As Outlook.Attachments
Dim objAtt As Outlook.Attachment
Dim oItM As Outlook.MailItem
Dim saveFolder As String
Dim dateFormat As String
Dim JarReturn As String
dateFormat = Format(Now, "yyyy-mm-dd")
saveFolder = "c:\temp\"
Set oAttS = ItM.Attachments
'''Save the attachements
For Each objAtt In oAttS
objAtt.SaveAsFile saveFolder & objAtt.FileName
Next objAtt
'''Run your jar
JarReturn = Run_Jar
'''Fill the email
Set oItM = OutApp.CreateItem(0)
'''Decomment the next line when you're done testing
'On Error Resume Next
With oItM
.To = ItM.SenderEmailAddress
.CC = ""
.BCC = ""
.Subject = ItM.Subject
.Body = JarReturn
For Each objAtt In oAttS
.Attachments.Add saveFolder & objAtt.FileName
Next objAtt
.Send 'or use .Display
End With
On Error GoTo 0
Set oAttS = Nothing
Set objAtt = Nothing
End Sub
非常感谢。需要一些时间来理解它。 –
代码的两个部分都会出现在单个模块中吗? –
@adirohan:由于'Public Function Run_Jar'是'Public',它是唯一从主程序中调用的,你可以将它们放在两个独立的模块中! ;) – R3uK
http://stackoverflow.com/questions/30289444/ how-to-call-java-jar-file-from-excel-vba and https://www.mrexcel.com/forum/excel-questions/775383-running-jar-visual-basic-applications.html 还有耶规则似乎是一个很好的触发器,它只依赖于你想要触发代码的参数! ;)我只是不知道是否/如何将jar的结果再次传递给VBA以填充响应 – R3uK
进一步说明,显然,您可以将jar的输出重定向到日志文件,然后您可以读取它来自VBA!看看我已经链接的SO问题的评论! ;) – R3uK
谢谢,它看起来像可能只是做我想做的。现在学习VB的时间:) –