У меня есть Excel VBA написана и пытается вызвать его из Java (с помощью Иакова), как показано ниже:Jacob: Вызов VBA не удалось
public void PnlCubeExcelMacroCallAndRefresh() {
ComThread.InitSTA();
File file=new File("C:\\Users\\Pnl_Cube_Template.xlsm");
// String macroName="Retrieve()";
String macroName="Retrieve()";
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").getDispatch();
//String eventSink = null ;
int id = Dispatch.get(workbooks, "Count").getInt();
System.out.println("le nbre" + id);
Dispatch.call(workbooks, "Add");
Dispatch workBook = Dispatch.call(workbooks, "Open", file.getAbsolutePath()).toDispatch();
Variant V1 = new Variant(file.getName() + macroName);
// Calls the macro
final Variant result = Dispatch.call(excel, "Run", V1);
// 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", new Variant[0]);
ComThread.Release();
}
}
Но когда я запускаю это ниже ошибка встречается:
com.jacob.com.ComFailException: Invoke of: Run Источник: Microsoft Excel Описание: Не удается запустить макрос «Pnl_Cube_Template.xlsmRetrieve». Макрос может быть недоступен в этой книге или все макросы могут быть отключены.
Я также попытался изменить настройки центра доверия, а также эту проблему.
Ну, у вас есть макрос в книге под названием 'Pnl_Cube_Template.xlsmRetrieve'? – immibis
@immibis: Да. Я делаю, добавил снимок экрана. – Vinod
Я вижу макрос, называемый 'Retrieve', а не макрос, называемый' Pnl_Cube_Template.xlsmRetrieve'. – immibis