Ver Mensaje Individual
  #2  
Antiguo 17-07-2020
averdu averdu is offline
Registrado
 
Registrado: jul 2020
Posts: 1
Reputación: 0
averdu Va por buen camino
ocultar cinta de opciones (ribbon) excel 2007

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
  // Seleccionamos archivo
  selector := TOpenTextFileDialog.Create(nil);
  selector.Filter := 'Documentos Excel|*.xls;*.xlsx;*.xlsb;*.xlsm';
  selector.Execute(Application.Handle);

  // Si no hay selección salimos
  if selector.Files.Count = 0 then
  begin
    Close;
    Exit;
  end;

  //Creamos objeto
  OleContainer1.CreateObjectFromFile(selector.Files[0], false);
  OleContainer1.DoVerb(ovInPlaceActivate);

  //Obtenemos el Módulo de código de VB para insertar código
  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);

  //Ejecutamos macro
  s := VExcel.Run('OcultarCinta');

  //mostramos formulario cargado
  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.
Imágenes Adjuntas
Tipo de Archivo: jpg Form2.jpg (34,4 KB, 2 visitas)
Responder Con Cita