Как читать личный макрос Excel из java с помощью Jacob

Мне нужно выполнить макрос файла excel из jacob, но теперь я хочу выполнить man.xlsb! Mymacro и ошибку java-программы. Я не знаю, как написать имя личного макроса, я ставлю:

String file = "D: /Aprogramas/EclipseJEE/temp/Libro2.xlsm"

public boolean openFile`(String file) { try { final String macroName = "!PERSONAL.XLSB!Auto_abrir"; executeMacro(new File(file), macroName); return true; } catch (Exception e) { e.printStackTrace(); } return true; } public boolean executeMacro(File file, String macroName) { ComThread.InitSTA(); final ActiveXComponent excel = new ActiveXComponent("Excel.Application"); try { final Dispatch workbooks = excel.getProperty("Workbooks") .toDispatch(); final Dispatch workBook = Dispatch.call(workbooks, "Open", file.getAbsolutePath()).toDispatch(); final Variant result = Dispatch.call(excel, "Run", new Variant(file.getName() + macroName)); 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(); return true; } } 

ОШИБКА в консолях:

 com.jacob.com.ComFailException: Invoke of: Run Source: Microsoft Excel Description: No se puede ejecutar la macro "Libro2.xlsm!PERSONAL.XLSB!Auto_abrir". Puede que la macro no esté disponible en este libro o que se hayan deshabilitado todas las macros. at com.jacob.com.Dispatch.invokev(Native Method) at com.jacob.com.Dispatch.invokev(Dispatch.java:625) at com.jacob.com.Dispatch.callN(Dispatch.java:453) at com.jacob.com.Dispatch.call(Dispatch.java:541) at com.test.main.POIExecutor.executeMacro(POIExecutor.java:43) at com.test.main.POIExecutor.openFile(POIExecutor.java:23) at com.test.main.Main.main(Main.java:11) 

Не нужно добавлять имя файла с макроном в методе Dispatch.call.

Удалите новую часть Variant (file.getName () + " из вашего метода Dispatch.call

 final Variant result = Dispatch.call(excel, "Run", **new Variant(file.getName() +** macroName)); 

Правильный путь

 final Variant result = Dispatch.call(excel, "Run", macroName)); 

Он будет выполняться без ошибок.

  • Как экспортировать графики из Excel в виде графики
  • Прочитайте несколько строк, проиндексированных серией объединенных ячеек из Excel с использованием Apache POI
  • Apache POI: как вставить столбец в файл Excel
  • Проблема с публикацией POI Excel Apache
  • Сравнение содержимого двух файлов excel
  • Невозможно выполнить расчет Pivot Table для генерации .xlsx
  • Jxls - использование функции TEXT в формате xlsx
  • Сохранить файл Excel с помощью OLE, Java на Eclipse RCP Application
  • Включить падение в xls после того, как лист защищен
  • Какой лучший API для чтения листов Excel в java - JXL или Apache POI
  • Селен огурца с использованием файла Excel в виде таблицы данных
  • Interesting Posts

    Проблема с макросом при чтении данных из txt-файла и сохранении его в файле excel

    Запись изображения pandas / matplotlib непосредственно в файл XLSX

    Почему, если я копирую ячейки в поле со списком в excel на новый, выбор все еще связан и принимает выбранное последнее значение?

    Доступ к сводному кэшу в Excel

    Синтаксис Unique: = True в vba excel

    Python Win32Com и Excel.Application не удалось сохранить в планировщике

    Получение гиперссылки из внешней базы данных

    Сохранить как CSV с разделителем с запятой

    Найти максимальное значение из нескольких столбцов и вернуть значение ячейки из соседнего столбца – Excel

    Как создать файл .xlsx с помощью PdfReport

    Извлечение данных из базы данных Azure SQL в Excel с помощью параметризованной хранимой процедуры

    как найти совпадающие имена в разных столбцах в электронной таблице OpenOffice Calc?

    Сохранение иностранных или специальных символов в файле CSV

    Получите первую букву каждого слова в предложении, за исключением некоторых ключевых слов

    Предотвращение проверки флажков флажками

    Давайте будем гением компьютера.