Hola, me veo obligado a responder y al mismo tiempo a preguntar sobre este tema porque hay muy poca información sobre esto aún a día de hoy,
La única manera que encuentro de poder ocultar la cinta de opciones es con el siguiente método que he creado al crear un formulario desde un botón, el cual inserta un bloque de código como macro en el módulo de código Visual Basic que trae Excel en el objeto OLE importado:
Código Delphi
[-]procedure TForm2.FormCreate(Sender: TObject);
var
selector: TOpenTextFileDialog;
VB, VWB, VExcel: OleVariant;
s: string;
begin
selector := TOpenTextFileDialog.Create(nil);
selector.Filter := 'Documentos Excel|*.xls;*.xlsx;*.xlsb;*.xlsm';
selector.Execute(Application.Handle);
if selector.Files.Count = 0 then
begin
Close;
Exit;
end;
OleContainer1.CreateObjectFromFile(selector.Files[0], false);
OleContainer1.DoVerb(ovInPlaceActivate);
VWB := Olecontainer1.Oleobject;
VExcel := VWB.Application;
s := 'Sub OcultarCinta()'
+ #13#10
+ 'ExecuteExcel4Macro("show.toolbar(""ribbon"",0)")'
+ #13#10
+ 'Application.DisplayFormulaBar = False'
+ #13#10
+ 'ActiveWindow.DisplayWorkbookTabs = False'
+ #13#10
+ 'ActiveWindow.DisplayHeadings = False'
+ #13#10
+ 'End Sub';
VB := VWB.VBProject.VBComponents.Add(1);
VB.CodeModule.AddFromString(s);
s := VExcel.Run('OcultarCinta');
Show;
end;
Esto trae 2 problemas principales, primero la interfaz se ajusta dejando un bloque en blanco en la parte superior del formulario y otro bloque más estrecho en la parte inferior, me gustaría saber como solucionar este tema para que la solución sea definitiva, adjunto captura de pantalla. ¿Alguna solución a esto?
El otro problema es que dependiendo del Excel que se utilice, si las macros están deshabilitadas aparecerá un mensaje de error indicando que o bien no existe la macro o están deshabilitadas y no ejecutará el código, ¿Alguien sabe si existe una manera de forzar la activación de macros en Excel o una alternativa a generar código en VisualBasic?
Saludos.