Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   ocultar cinta de opciones (ribbon) excel 2007 (https://www.clubdelphi.com/foros/showthread.php?t=86223)

_CALI 03-07-2014 03:02:53

ocultar cinta de opciones (ribbon) excel 2007
 
Hola Amigos, después de tiempo y como siempre quisiera que me echen una manito con lo siguiente:
Resulta que estoy con un TOlecontainer y un TExcelApplication para manejar datos de excel desde mi formulario,
el problema es que quisiera ocultar la cinta de opciones(Ribbon) del excel 2007 y no veo la manera, indagando mire sobre la edición de un archivo XML pero la verdad lo encuentro engorros, probé con las siguientes formas:

Código Delphi [-]

  Excel := TExcelApplication.Create(Self);
  Ole.CreateObjectFromFile('D:\archivo.xlsx', False);

  // Ole.OleObject.ActiveWindow.View.Application.OpenAttachmentsInFullScreen := true;
  // Ole.OleObject.ActiveWindow.ToggleRibbon;
  // Ole.OleObject.ActiveWindow.View.FullScreen := true;
  // Ole.OleObject.Application.ExecuteExcel4Macro('SHOW.TOOLBAR(""Ribbon"", ""false"")');
  // Ole.OleObject.Application.ExecuteExcel4Macro('Application.DisplayFullScreen = True');
  // Ole.OleObject.Application.SendKeys('^{F1}', true, 0);
  
  Ole.DoVerb(ovShow);
  Excel.ConnectTo(_Workbook(Ole.OleObjectInterface as _Workbook).Application);
hasta ahi todo funciona OK,
pero ninguna de las lineas en comentarios me funciona se lanza el error "Interface not supported"
estoy trabajando con XE6 y office 2007

alguna sugerencia?, Gracias de antemano!!

averdu 17-07-2020 09:32:06

ocultar cinta de opciones (ribbon) excel 2007
 
1 Archivos Adjunto(s)
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.


La franja horaria es GMT +2. Ahora son las 14:39:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi