【发布时间】:2018-04-27 12:02:14
【问题描述】:
在问我的问题之前,我搜索了很多,但找不到答案。事实上,我设法从 Java 运行了一个自定义宏,但在完成之前它向我显示了一条错误消息,指出 VBA 中的一行代码类型不匹配,当我手动运行它时,它运行良好。
谁能帮帮我?
我把导致错误的代码行放在这里:
Det_Lundi = Evaluate("TEXT(DATE(" & Annee & ",1,3)-WEEKDAY(DATE(" & Annee & ",1,3))-5+(7*" & semaine & ")+" & NumJour & ",""dd/mm/yyyy"")")
正如我所说,如果我手动运行它,它也可以完美运行,我也测试了我在 java 中编写的运行宏的方法,它与其他宏一起工作,唯一的问题是这一行。
感谢您的回答。 我真的不同意,因为当我在这里手动运行它时它起作用了我发布了我的 VBA 代码:
函数 Det_Lundi() 作为日期 将 ws_c 调暗为工作表 Dim Annee 作为整数,semaine 作为整数,NumJour 作为整数
semaine = Format(Worksheets("Abs").Range("a1").Value, "ww", vbMonday, vbFirstFourDays)
Annee = Year(Worksheets("Abs").Range("a1").Value) 'semaine = 16
NumJour = 0 ' 0=Lundi, 1=Mardi ...
Det_Lundi = Evaluate("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();
}
}
【问题讨论】:
-
请显示代码的所有相关部分(看看如何构建minimal reproducible example)。特别是在您声明变量的地方。并且在
Evaluate("TEXT的开头不应该有=就像Evaluate("=TEXT一样吗?