在问我的问题之前,我搜索了很多,但我找不到答案。实际上,我设法从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()作为日期 Dim ws_c作为工作表 Dim Annee As Integer,semaine As Integer,NumJour As Integer
semaine =格式(工作表(" Abs")。范围(" a1")。值," ww",vbMonday,vbFirstFourDays)
Annee = Year(工作表(" Abs")。范围(" a1")。值) ' semaine = 16
NumJour = 0' 0 = Lundi,1 = Mardi ......
Det_Lundi =评估(" TEXT(日期("& Annee&",1,3)-WEEKDAY(日期("& Annee&&#34) ;,1,3)) - 5+(7 *"& semaine&")+"& NumJour&",""日/月/年"")&#34)
结束功能
我也将我的方法放在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();
}
}
答案 0 :(得分:0)
您的问题可能是内部日期,Excel只能识别英语,因此dd/mm/yyyy
可能实际上是mm/dd/yyyy
。虽然这只是猜测。
如果这没有帮助,请查看this是否有帮助。