Comment bouger une feuille dans une appli Excel - Delphi/Pascal - Programmation
Marsh Posté le 18-09-2006 à 15:28:23
Bonjour ,
J'ai le même problème.
Comment copier une nouvelle feuille dans un classeur EXCEL?
J'ai trouvé comment le créer vierge, le nommer, mais pas comment recopier un onglet existant .
Quelqu'un at-t-il la réponse ?
Isama.
Marsh Posté le 18-11-2006 à 00:47:14
// Voilà le code à adapter.
// J'ai fait ça de mémoire, je suis désolé je n'ai pas mon delphi avec moi.
// Bon courage les gars, et tenez-nous au courant.
//
// Petite astuce : faites des macro dans excel puis regardez leur code puis tentez de l'adapter en delphi; Sinon : aide VB d'Excel.
unit UForm1;
interface
uses
..., Variants, ComObj, Excel2000; // Je suis plus trés sûr pour les uses...
TForm1 = class(TForm)
...
procedure Create(Sender: TObject);
...
private
FExcelObject: Variant;
getClasseur(pIndex: Integer): Variant;
getFeuille(pIdxClasseur, pIdxFeuille: Integer): Variant;
...
public
DeplacerFeuille(pIdxClasseur, pIdxFeuilleAvant, pIdxFeuilleApres: Integer; pAvant: Boolean);
end;
implementation
procedure TForm1.Create(Sender: TObject);
begin
// Instanciatier un objet COM pour Excel.
try
// On prend l'objet COM excel qui existe déjà, ou...
FExcelObjet := GetActiveOleObject('Excel.Application');
except
// ...pas d'objet COM alors on le crée.
FExcelObjet := CreateOleObject('Excel.Application');
End;
FExcelObjet.Visible := True;
end;
function TForm1.getClasseur(pIndex: Integer): Variant;
begin
// vClasseur := FExcelObject.ActiveWorkBook; ou alors ...
Result := FExcelObject.WorkBooks[pIndex];
end;
function.TForm1.getFeuille(pIdxClasseur, pIdxFeuille: Integer): Variant;
begin
// vFeuille := vClasseur.ActiveWorkSheet; ou alors ...
Result := Self.getClasseur(pIdxClasseur).Worksheets[pIdxFeuille];
end;
procedure TForm1.DeplacerFeuille(pIdxClasseur, pIdxFeuilleAvant, pIdxFeuilleApres: Integer; pAvant: Boolean);
var
vFeuille : Variant;
begin
try
vFeuille := Self.getFeuille(pIdxClasseur, pIdxFeuilleAvant);
if pIdxFeuilleApres then
begin
vFeuille.Move(Self.getFeuille(pIdxClasseur, pIdxFeuilleApres));
end
else
begin
vFeuille.Move(Null, Self.getFeuille(pIdxClasseur, pIdxFeuilleApres));
end;
except
on e:exception do
begin
raise exception.Create('Erreur lors du déplacement de la feuille ' + IntToStr(pIdxFeuille) +e.Message);
end;
end;
end;
...
end;
Marsh Posté le 16-05-2005 à 12:08:33
Bonjour,
je suis en train de développer une appli qui remplit automatiquement un fichier Excel (piloté avec un objet OLE).
Or je cherche à bouger les feuilles du workbook.
Et là, c'est le drame.
La commande VB qui permet ça est Move After (avec un espace entre le Move et l'After). Donc, quand je cherche à l'utiliser en Delphi, il ne saisit pas la syntaxe.
Je voulais donc savoir si quelqu'un connaissait une autre manière de bouger les feuilles d'un fichier Excel piloté par un objet OLE.
Merci pour toutes les informations.
Aspi Brach