在Java中使用Jacob运行个人VBA代码

在Java中使用Jacob运行个人VBA代码,java,vba,excel,jacob,Java,Vba,Excel,Jacob,在问我的问题之前,我搜索了很多,但找不到答案。事实上,我设法从Java运行了一个自定义宏,但在完成之前,它向我显示了一条错误消息,在VBA中的一行代码上显示了类型不匹配,当我手动运行它时,它工作得非常好 有人能帮我吗 我将导致错误的代码行放在这里: Det_Lundi=Evaluate(“文本(日期(“&Annee&”,1,3)-工作日(日期(“&Annee&”,1,3))-5+(7*”&semaine&“+”)“&NumJour&“,”dd/mm/yyyy“) 正如我所说,如果我手动运行它

在问我的问题之前,我搜索了很多,但找不到答案。事实上,我设法从Java运行了一个自定义宏,但在完成之前,它向我显示了一条错误消息,在VBA中的一行代码上显示了类型不匹配,当我手动运行它时,它工作得非常好

有人能帮我吗

我将导致错误的代码行放在这里:

Det_Lundi=Evaluate(“文本(日期(“&Annee&”,1,3)-工作日(日期(“&Annee&”,1,3))-5+(7*”&semaine&“+”)“&NumJour&“,”dd/mm/yyyy“)
正如我所说,如果我手动运行它,它工作得很好。我还测试了我用java编写的运行宏的方法,它与其他宏一起工作。唯一的问题是这一行

谢谢你的回答。 我真的不同意,因为当我在这里手动运行它时,它工作了。我发布了我的VBA代码:

函数Det_Lundi()作为日期 Dim ws_c As工作表 Dim Annee为整数,semaine为整数,NumJour为整数

semaine=格式(工作表(“Abs”).范围(“a1”).值,“ww”、vbMonday、vbFirstFourDays)

Annee=年份(工作表(“Abs”)范围(“a1”)值) “semaine=16

NumJour=0'0=Lundi,1=Mardi

Det_Lundi=Evaluate(“文本(日期(“&Annee&”,1,3)-工作日(日期(“&Annee&”,1,3))-5+(7*”&semaine&“+”&NumJour&“,“dd/mm/yyyyy”))

端函数

我还用java编写了我的方法:

public static void UpdateFile(final File file, final String macroName) {
    ComThread.InitSTA();
    final ActiveXComponent excel = new ActiveXComponent("Excel.Application");

try {
    // This will open the excel if the property is set to true
    // excel.setProperty("Visible", new Variant(true));

    final Dispatch workbooks = excel.getProperty("Workbooks")
            .toDispatch();
    final Dispatch workBook = Dispatch.call(workbooks, "Open",
            file.getAbsolutePath()).toDispatch();

    // Calls the macro
    final com.jacob.com.Variant result = Dispatch.call(excel, "Run", macroName);

    // Saves and closes
    Dispatch.call(workBook, "Save");

    com.jacob.com.Variant f = new com.jacob.com.Variant(true);
    Dispatch.call(workBook, "Close", f);

} catch (Exception e) {
    e.printStackTrace();
} finally {

    excel.invoke("Quit");
    ComThread.Release();
}
}

您的问题可能与日期有关,因为Excel内部只懂英语,所以
dd/mm/yyyyy
实际上可能是
mm/dd/yyyy
。虽然这只是一个猜测


如果那没用,看看能不能帮上忙

请展示代码的所有相关部分(看看如何构建一个应用程序)。尤其是在声明变量时。在
Evaluate(“TEXT
类似
Evaluate”(=TEXT
)的开头不应该有一个
=
吗?谢谢你的回答,但我已经尝试过了!但是现在我可以看到一个新东西,当我从eclipse运行宏时,生成错误结果:Det_Lundi=Evaluate(“TEXT(DATE(&Annee&)”,1,3)-工作日(DATE)(“&Annee&“,1,3”)-5+(7*”&semaine&“+”&NumJour&“,”dd/mm/yyyy“)”)显示Det_Lundi的格式为00:00:00,如何解决此问题?感谢大家,但我解决了问题,我已将vba中的函数替换为以下行:ws_c.Range(“c7”)=工作表(“Abs”).Range”(“a1”).Value-Weekday(工作表(“Abs”).Range”(“a1”).值,vbUseSystemDayOfWeek)+1