Piloter excel (zone d'impression, password, ajout de feuille, etc)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 22 313 fois - Téléchargée 31 fois

Contenu du snippet

Use password to protect Excel Sheet

Source / Exemple :


unit UTesteProtect; 

interface 

uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, StdCtrls, ComObj; 

type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    procedure Button1Click(Sender: TObject); 
    procedure FormDestroy(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 

var 
  Form1: TForm1; 
  ExcelApp: OleVariant; 

implementation 

{$R *.dfm} 

procedure TForm1.Button1Click(Sender: TObject); 
const 
  // SheetType 
  xlChart = -4109; 
  xlWorksheet = -4167; 
  // WBATemplate 
  xlWBATWorksheet = -4167; 
  xlWBATChart = -4109; 
  // Page Setup 
  xlPortrait = 1; 
  xlLandscape = 2; 
  xlPaperA4 = 9; 
  // Format Cells 
  xlBottom = -4107; 
  xlLeft = -4131; 
  xlRight = -4152; 
  xlTop = -4160; 
  // Text Alignment 
  xlHAlignCenter = -4108; 
  xlVAlignCenter = -4108; 
  // Cell Borders 
  xlThick = 4; 
  xlThin = 2; 
var 
  ColumnRange: OleVariant; 

begin 
  { Start Excel } 

  // By using GetActiveOleObject, you use an instance o 
  // f Word that's already running, 
  // if there is one. 
     try 
      // create a new instance of Excel 
      Excel := CreateOleObject('Excel.Application'); 
     except 
          on E:Exception do 
          begin 
              E.Message := 'Cannot start Excel/Excel not installed ?'#13#10+E.Message; 
              raise; 
              exit;
          end; 
     end; 

  // Add a new Workbook, Neue Arbeitsmappe offnen 
  ExcelApp.Workbooks.Add(xlWBatWorkSheet); 

  // Open a Workbook, Arbeitsmappe offnen 
  ExcelApp.Workbooks.Open('c:\pasta1.xls'); 

  // Rename the active Sheet 
  ExcelApp.ActiveSheet.Name := 'Pasta1'; 

  // Rename 
  ExcelApp.Workbooks[1].WorkSheets[1].Name := 'Pasta1'; 

  // Insert some Text in some Cells[Row,Col] 
  ExcelApp.Cells[1, 1].Value := 'Test'; 
  ExcelApp.Cells[2, 1].Value := 'http://www.delphifr.com'; 
  ExcelApp.Cells[3, 1].Value := FormatDateTime('dd-mmm-yyyy', Now); 

  // Setting a row of data with one call 
  //ExcelApp.Range['A2', 'D2'].Value := VarArrayOf([1, 10, 100, 1000]); 

  // Setting a formula 
// ExcelApp.Range['A11', 'A11'].Formula := '=Sum(A1:A10)'; 

  // Change Cell Alignement 
// ExcelApp.Cells[2, 1].HorizontalAlignment := xlright; 

  // Change the Column Width. 
  ColumnRange := ExcelApp.Workbooks[1].WorkSheets[1].Columns; 
  ColumnRange.Columns[1].ColumnWidth := 20; 
  ColumnRange.Columns[2].ColumnWidth := 40; 

  // Change Rowheight / Zeilenhohe andern: 
  ExcelApp.Rows[1].RowHeight := 15.75; 

  // Merge cells, Zellen verbinden: 
  ExcelApp.Range['B3:D3'].Mergecells := True; 

  // Apply borders to cells, Zellen umrahmen: 
  ExcelApp.Range['A14:M14'].Borders.Weight := xlThick; // Think line/ Dicke Linie 
  ExcelApp.Range['A14:M14'].Borders.Weight := xlThin;  // Thin line Dunne Linie 

  // Set Bold Font in cells, Fettdruck in den Zellen 

  ExcelApp.Range['B16:M26'].Font.Bold := True; 

  // Set Font Size, Schriftgro?e setzen 
  ExcelApp.Range['B16:M26'].Font.Size := 12; 

  //right-aligned Text, rechtsbundige Textausrichtung 
  ExcelApp.Cells[9, 6].HorizontalAlignment := xlright; 

  // horizontal-aligned text, horizontale Zentrierung 
  ExcelApp.Range['B14:M26'].HorizontalAlignment := xlHAlignCenter; 

  // left-aligned Text, vertikale Zentrierung 
// ExcelApp.Range['B14:M26'].VerticallyAlignment := xlVAlignCenter; 

  { Page Setup } 

  ExcelApp.ActiveSheet.PageSetup.Orientation := xlLandscape; 

  // Left, Right Margin (Seitenrander) 
  ExcelApp.ActiveSheet.PageSetup.LeftMargin  := 35; 
  ExcelApp.ActiveSheet.PageSetup.RightMargin := -15; 

  // Set Footer Margin 
  ExcelApp.ActiveSheet.PageSetup.FooterMargin := ExcelApp.InchesToPoints(0); 

  // Fit to X page(s) wide by Y tall 
  ExcelApp.ActiveSheet.PageSetup.FitToPagesWide := 1;  // Y 
  ExcelApp.ActiveSheet.PageSetup.FitToPagesTall := 3; // Y 

  // Zoom 
  ExcelApp.ActiveSheet.PageSetup.Zoom := 95; 

  // Set Paper Size: 
// ExcelApp.PageSetup.PaperSize := xlPaperA4; 

  // Show/Hide Gridlines: 
  ExcelApp.ActiveWindow.DisplayGridlines := False; 

  // Set Black & White 
  ExcelApp.ActiveSheet.PageSetup.BlackAndWhite := False; 

  // footers 
  ExcelApp.ActiveSheet.PageSetup.RightFooter := 'Right Footer / Rechte Fu?zeile'; 
  ExcelApp.ActiveSheet.PageSetup.LeftFooter  := 'Left Footer / Linke Fu?zeile'; 

  // Show Excel Version: 
  ShowMessage(Format('Excel Version %s: ', [ExcelApp.Version])); 

  // Show Excel: 
//  ExcelApp.Visible := True; 

  // Save the Workbook 
  //ExcelApp.SaveAs('c:\filename.xls'); 

  // Save the active Workbook: 
// ExcelApp.ActiveSheet.Protect.Password := 'Teste'; 
  ExcelApp.ActiveSheet.Protect(Password:='Teste', DrawingObjects:=True, Contents:=True, Scenarios:=True);//; 
  //Contents:=True, Scenarios:=True 
  ExcelApp.ActiveWorkBook.SaveAs('c:\filename.xls'); 
end; 

procedure TForm1.FormDestroy(Sender: TObject); 
begin 
  // Quit Excel 
  if not VarIsEmpty(ExcelApp) then 
  begin 
    ExcelApp.DisplayAlerts := False;  // Discard unsaved files.... 
    ExcelApp.Quit; 
  end; 

end; 

end.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
samedi 12 décembre 2015
Statut
Membre
Dernière intervention
12 décembre 2015

C'est une bonne idée, on vous remercie....
Messages postés
11
Date d'inscription
vendredi 10 novembre 2006
Statut
Membre
Dernière intervention
21 novembre 2006

Je ne suis pas du tout experte en excel, mais je pense que cette macro va pouvoir m'aider pour mon outil. Peux-tu m'expliquer à quoi elle sert exactement? Elle a quel effet ?
Merci.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
65
Il ouvre un classeur excel, ajoute un feuille, ajoute des formules, des tas de petites choses, et a l'enregistrement, il ajoute un mot de passe

que veux tu comme explication ? tout est dans le code...
Messages postés
718
Date d'inscription
jeudi 19 décembre 2002
Statut
Membre
Dernière intervention
22 novembre 2016
3
çà pourrai etre plus riche en explication non ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.