:: MVP ::
|
|
:: RSS ::
|
|
|
Как сделать автоперенос строк в ячейке/на всем листе?
var
E: OleVariant;
// В ячейке
procedure TForm1.Button1Click(Sender: TObject);
begin
E.ActiveSheet.Range['A1'].WrapText := True;
E.ActiveSheet.Range['A1'].EntireRow.AutoFit;
end;
// На всем листе
procedure TForm1.Button2Click(Sender: TObject);
begin
E.Cells.Select; // Выдаляем все ячейки на листе
E.Selection.WrapText := False;
end;
|
Как скрыть/показать заголовки строк и столбцов?
var
E: OleVariant;
procedure TForm1.Button1Click(Sender: TObject);
begin
// Скрыть заголовки
E.ActiveWindow.DisplayHeadings := False;
// Показать заголовки
E.ActiveWindow.DisplayHeadings := True;
end;
|
Как сгруппировать/разгруппировать несколько строк?
// Способ первый
var
E: OleVariant;
// Сгруппировать
procedure TForm1.Button1Click(Sender: TObject);
begin
E.Selection.Rows.Group;
end;
// Разгруппировать
procedure TForm1.Button2Click(Sender: TObject);
begin
E.Selection.Rows.Ungroup;
end;
// Способ второй
var
E: OleVariant;
// Сгруппировать
procedure TForm1.Button1Click(Sender: TObject);
begin
E.Range['A1:A4'].Rows.Group;
end;
// Разгруппировать
procedure TForm1.Button2Click(Sender: TObject);
begin
E.Range['A1:A4'].Rows.Ungroup;
end;
|
Как сгруппировать/разгруппировать несколько столбцов?
// Способ первый
var
E: OleVariant;
// Сгруппировать
procedure TForm1.Button1Click(Sender: TObject);
begin
E.Selection.Columns.Group;
end;
// Разгруппировать
procedure TForm1.Button2Click(Sender: TObject);
begin
E.Selection.Columns.Ungroup;
end;
// Способ второй
var
E: OleVariant;
// Сгруппировать
procedure TForm1.Button1Click(Sender: TObject);
begin
E.Range['A1:D1'].Columns.Group;
end;
// Разгруппировать
procedure TForm1.Button2Click(Sender: TObject);
begin
E.Range['A1:D1'].Columns.Ungroup;
end;
|
Как динамически создать функцию в документе Excel, вызвать ее и вернуть значение через параметр?
uses
{...,} ComObj;
procedure TForm1.Button1Click(Sender: TObject);
var
E, B: OleVariant;
i: OleVariant;
SomeStr: OleVariant;
begin
E := CreateOleObject('Excel.Application');
B := E.Workbooks.Add;
E.Visible := True;
i := E.VBE.ActiveVBProject.VBComponents.Count;
E.VBE.ActiveVBProject.VBComponents.Add(1);
// Добавляем в модуль книги код на VB
B.VBProject.VBComponents.Item(i+1).CodeModule.InsertLines(1, 'Function Test(ByRef p)');
B.VBProject.VBComponents.Item(i+1).CodeModule.InsertLines(2, ' Range("A2").Select');
B.VBProject.VBComponents.Item(i+1).CodeModule.InsertLines(3, ' ActiveCell.FormulaR1C1 = p');
B.VBProject.VBComponents.Item(i+1).CodeModule.InsertLines(4, ' p = "123"');
B.VBProject.VBComponents.Item(i+1).CodeModule.InsertLines(5, 'End Function');
SomeStr := 'qwerty';
E.Application.Run('Test', SomeStr);
ShowMessage(SomeStr);
B.Close;
B := Unassigned;
E.Quit;
E := Unassigned;
end;
|
Как активировать лист рабочей книги Excel?
// Способ первый
uses
{...,} ComObj;
var
E: OleVariant;
procedure TForm1.Button1Click(Sender: TObject);
begin
E := CreateOleObject('Excel.Application');
E.WorkBooks.Add;
E.Visible := true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not VarIsEmpty(E) then
begin
E.Quit;
E := Unassigned;
end;
end;
// Само переключение
procedure TForm1.Button3Click(Sender: TObject);
function FindListIndex(ListName: string): Integer;
var
i: Integer;
begin
Result := 0;
for i := 1 to E.ActiveWorkbook.Sheets.Count do
if AnsiLowerCase(E.ActiveWorkbook.Sheets.Item[i].Name) = AnsiLowerCase(ListName) then
Exit(i);
end;
var
Index: Integer;
begin
Index := FindListIndex('Лист2');
if Index > 0 then
E.ActiveWorkbook.Sheets.Item[Index].Activate;
end;
// Способ второй
uses
{...,} ComObj;
var
E: OleVariant;
procedure TForm1.Button1Click(Sender: TObject);
begin
E := CreateOleObject('Excel.Application');
E.Workbooks.Add;
E.Visible := True;
E.Sheets['Лист2'].Activate; // Само переключение
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not VarIsEmpty(E) then
begin
E.Quit;
E := Unassigned;
end;
end;
|
Как сделать фильтр по колонке?
uses
{...,} ComObj;
var
E: OleVariant;
procedure TForm1.Button1Click(Sender: TObject);
begin
E := CreateOleObject('Excel.Application');
E.Workbooks.Add;
E.Range['A1:A9'].Value := 'sss';
E.ActiveSheet.Rows[1].AutoFilter; // AutoFilter для A1
E.Visible := True;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not VarIsEmpty(E) then
begin
E.Quit;
E := Unassigned;
end;
end;
|
Как залить весь лист цветом/убрать заливку?
var
E: OleVariant;
// Заливка всего листа
procedure TForm1.Button1Click(Sender: TObject);
begin
E.Cells.Select; // Выдаляем все ячейки на листе
E.Selection.Interior.Pattern := 1; // xlSolid;
E.Selection.Interior.PatternColorIndex := -4105; // xlAutomatic;
E.Selection.Interior.Color := 5287936;
E.Selection.Interior.TintAndShade := 0;
E.Selection.Interior.PatternTintAndShade := 0;
end;
// Удаление заливки со всего листа
procedure TForm1.Button2Click(Sender: TObject);
begin
E.Cells.Select; // Выдаляем все ячейки на листе
E.Selection.Interior.Pattern := -4142; // xlNone
E.Selection.Interior.TintAndShade := 0;
E.Selection.Interior.PatternTintAndShade := 0;
end;
|
При использовании материала - ссылка на сайт обязательна
|
|