Прежде чем задать свой вопрос, я много искал, но не нашел ответа. Фактически, мне удалось запустить собственный макрос из 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 Dim Annee As Integer, semaine As Integer, NumJour As Integer
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();
}
}
=
в начале вEvaluate("TEXT
, например,Evaluate("=TEXT
? - person Pᴇʜ   schedule 27.04.2018