Excel zamiana kolejności arkuszy

0

Oto prosty przykład eksportu z Delphi do Excel mamy
otwarte osiem arkuszy jak zmienić kolejność otwartych
już wcześniej arkuszy tak aby np. "Arkusz6" widoczny był
na pierwszej pozycji w liście na dole okna Excel.

 
uses ComObj;

procedure TForm1.Button1Click(Sender: TObject);
var
     Excel,Sheet: Variant;
begin
     Excel:=CreateOleObject('Excel.Application');  // Otwarcie excel
     Excel.SheetsInNewWorkbook:=8;  //Początkowa ilość arkuszy w nowym skoroszycie
     Excel.WorkBooks.Add(); //Tworzymy nowy skoroszyt

     Excel.Visible:=True;     //Skoroszyt Excel widoczny na ekranie

     //Ustawiamy aktywność arkusza w skoroszycie
     Excel.WorkBooks[1].WorkSheets[3].Activate;


     Sheet:=Excel.WorkBooks[1].WorkSheets[1];
     Sheet.Cells[1,1].Value:='dana testowa';      // Zapis danej do komórki Excela


     Excel.DisplayAlerts:=True; //Pytaj o zapis niezapisanych
     Excel.ActiveWorkbook.SaveAs(ExtractFilePath(Application.ExeName)+'aaaaaa.xlsx');             // Zapis do pliku
     if not VarIsEmpty(Excel) then
     begin
          Excel.Quit;
          Excel:=UnAssigned;
          Sheet:=UnAssigned;
     end;
end;
1
  1. uruchamiasz excela
  2. włączasz nagrywanie makro
  3. zamieniasz arkusze
  4. kończysz nagrywanie
  5. patrzysz do kodu makra
    i masz
0

Wyszło coś takiego:

Sheets("Arkusz6").Select
Sheets("Arkusz6").Move Before:=Sheets(1)

microsoft BASIC a feee....!!! jak to teraz napisać w Delphi????

2

Excel.WorkBooks[1].WorkSheets[6].Move('Before' := Excel.WorkBooks[1].WorkSheets[1]);
albo
Excel.WorkBooks[1].WorkSheets[6].Move(Excel.WorkBooks[1].WorkSheets[1]);

0

Dzięki działa doskonale.....

0

napisał byś która wersja działa
i zaakceptuj odpowiedź :p

0

U mnie działa tylko: Excel.WorkBooks[1].WorkSheets[6].Move(Excel.WorkBooks[1].WorkSheets[1]);

Jutro dodam przykładzik dla początkujących z Excelem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1