Dear Community Members,
I’m trying to open up an ExcelMacroSheet (.xlsm) with swt.
The Sheet is opened and displayed correctly. But there is a Macro in the Sheet which is called on Workbook_Open(). There the Macros craches, because it can’t find ActiveWorkbook.Path and ActiveWorkbook.Name.
The ActiveWorkbook Variable doesn’t seem to be set.
Also if opened via OleClientSite it seems that there is created an copy of the VbaProject in the workbook every time it gets opened.
Can anybody please help?
Here goes the current code:
Display display = new Display();
final Shell shell = new Shell(display);
shell.setText("Excel Demo");
shell.setSize(640, 480);
shell.setLayout(new FillLayout());
frame = new OleFrame(shell, SWT.NONE);
clientSite = new OleClientSite(frame, SWT.NONE, "Excel.SheetMacroEnabled.12", new File(“FILEPATH”));
clientSite.doVerb(OLE.OLEIVERB_UIACTIVATE);
shell.open();
shell.addDisposeListener(new DisposeListener()
{
public void widgetDisposed(DisposeEvent event)
{
MessageBox messageBox = new MessageBox(shell, SWT.YES | SWT.NO);
messageBox.setText("Achtung");
messageBox.setMessage("Änderungen abspeichern");
int buttonID = messageBox.open();
switch(buttonID)
{
case SWT.YES:
clientSite.save(new File(fileName), true);
break;
case SWT.NO:
// exits here ...
break;
}
}
});
while (!shell.isDisposed())
if (!display.readAndDispatch())
display.sleep();
clientSite.deactivateInPlaceClient();
clientSite.dispose();
Thanks in advance,
Max