运行 Jacob 在 Java 中的个人 VBA 代码

Running Personal VBA code with Jacob in Java

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

谁能帮帮我?

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

Det_Lundi = Evaluate("TEXT(DATE(" & Annee & ",1,3)-WEEKDAY(DATE(" & Annee & ",1,3))-5+(7*" & semaine & ")+" & NumJour & ",""dd/mm/yyyy"")")

正如我所说,如果我 运行 它是手动的,它工作得很好 我也测试了我在 java 中写的方法,其中 运行s 宏和它与其他宏一起工作唯一这条线有问题。

感谢您的回答。 我真的不同意,因为当我 运行 它在这里手动工作时它起作用了 我 post 我的 VBA 代码:

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

semaine = 格式(工作表("Abs")。范围("a1")。值,"ww",vbMonday,vbFirstFourDays)

Annee = 年(工作表("Abs")。范围("a1")。值) '半月 = 16

NumJour = 0 ' 0=Lundi, 1=Mardi ...

Det_Lundi = 计算("TEXT(DATE(" & Annee & ",1,3)-WEEKDAY(DATE(" & Annee & ",1,3))-5+(7*" & semaine & ")+" & NumJour & ",""dd/mm/yyyy"")")

结束函数

我也把我的方法放在 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/yyyy 实际上可能是 mm/dd/yyyy。虽然这只是一个猜测。

如果这没有帮助,看看 this 是否有帮助。