Прежде чем задать вопрос, я много искал, но не могу найти ответ. Фактически мне удалось запустить пользовательский макрос из 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 () As Date
Dim ws_c As Worksheet
Дим Анни как целое число, семя как целое число, NumJour как целое число
semaine = Формат (рабочие таблицы ("Abs"). Диапазон ("a1"). Значение, "ww", vbMonday, vbFirstFourDays)
Annee = Год (рабочие листы ("Abs"). Диапазон ("a1"). Значение)
'semaine = 16
NumJour = 0 '0 = Лунди, 1 = Марди ...
Det_Lundi = Evaluate ("TEXT (DATE (" & Annee & ", 1,3) -WEEKDAY (DATE (" & Annee & ", 1,3)) - 5+ (7 *" & semaine & ") + "& NumJour &", "" дд / мм / гггг "") ")
Функция завершения
также я положил свой метод в 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();
}
}