运行 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 是否有帮助。
在问我的问题之前,我进行了很多搜索,但找不到答案。事实上,我设法 运行 来自 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 是否有帮助。