Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
ВнизExcel Найти похожие ветки
← →
N (2004-03-17 06:44) [0]Здравствуйте, помогите кто как может.
Не получается выделить блок ячеек в Excel, разлиновать,
потом, конечно снять выделение.
Заранее, спасибо,
← →
KSergey © (2004-03-17 07:06) [1]Работаем через OLE? Тогда примерно так (извиняюсь за длинноватый примерчик, вырезать лень)
procedure SetDataFormat;
var Sel: Variant;
i: Integer;
begin
if r <= rDataStart then Exit; // данных не перенесено
// выравнивание текста
if AAlignments <> nil then
for i := 1 to cMax do
begin // в r-1 записан номер последней строки с данными
Worksheet.Range[Cells.Item[rDataStart,i], Cells.Item[r-1,i]].Select;
Sel := MSExcel.Selection;
case AAlignments[i-1] of
taLeftJustify: Sel.HorizontalAlignment := xlLeft;
taRightJustify: Sel.HorizontalAlignment := xlRight;
taCenter: Sel.HorizontalAlignment := xlCenter;
end;
end;
// бордюр ячеек
Worksheet.Range[Cells.Item[rDataStart,1], Cells.Item[r-1,cMax]].Select;
Sel := MSExcel.Selection;
Sel.Borders[xlInsideVertical].LineStyle := xlContinuous;
Sel.Borders[xlInsideVertical].Weight := xlThin;
Sel.Borders[xlInsideVertical].ColorIndex := xlAutomatic;
Sel.Borders[xlInsideHorizontal].LineStyle := xlContinuous;
Sel.Borders[xlInsideHorizontal].Weight := xlThin;
Sel.Borders[xlInsideHorizontal].ColorIndex := xlAutomatic;
Sel.Borders[xlEdgeLeft].LineStyle := xlContinuous;
Sel.Borders[xlEdgeLeft].Weight := xlMedium;
Sel.Borders[xlEdgeLeft].ColorIndex := xlAutomatic;
Sel.Borders[xlEdgeRight].LineStyle := xlContinuous;
Sel.Borders[xlEdgeRight].Weight := xlMedium;
Sel.Borders[xlEdgeRight].ColorIndex := xlAutomatic;
Sel.Borders[xlEdgeTop].LineStyle := xlContinuous;
Sel.Borders[xlEdgeTop].Weight := xlMedium;
Sel.Borders[xlEdgeTop].ColorIndex := xlAutomatic;
Sel.Borders[xlEdgeBottom].LineStyle := xlContinuous;
Sel.Borders[xlEdgeBottom].Weight := xlMedium;
Sel.Borders[xlEdgeBottom].ColorIndex := xlAutomatic;
Sel.Font.Bold := False;
end;
← →
N (2004-03-17 07:44) [2]спасибо, но у меня не идентифицируются свойства - xlInsideVertical и т.д.
что делать?
← →
KSergey © (2004-03-17 07:57) [3]Либо писать значение этих констант, либо взять файл констант, портированный под дельфи. Либо самому же его и спортировать, как описано в любой книжке по COM (хотя у меня лично не получилось, каюсь)
Где я взял - не помню, вроде от XLReport (возможно, на их сайте). Если надо - могу намылить (в частности файл для екселя - Excel8TLB.pas; либо в инете его поищи - наверняка найдется)
← →
N (2004-03-17 08:58) [4]спасибо Sergey
я нашла обозначение цифрами - проканывает
v.range["A6:H"+(inttostr(Numb+5))].Borders[7].LineStyle := 1;
v.range["A6:H"+(inttostr(Numb+5))].Borders[7].Weight := 2;
v.range["A6:H"+(inttostr(Numb+5))].Borders[7].ColorIndex := -4105;
← →
evvcom © (2004-03-17 10:15) [5]
> я нашла обозначение цифрами - проканывает
Все равно лучше прописать константы и использовать их. Так код легче читается. А то ведь и вовсе можно на язык машинных кодов перейти, тоже "проканает".
Инструкции типа v.range["A6:H"+(inttostr(Numb+5))].Borders[7] если вдруг используются еще и в цикле лучше присваивать вариантным переменным, и потом через них уже добираться много раз к свойствам объекта. Так будет быстрее работать, а то интерпретатор пока несколько раз разберет такую команду, уже и рак на горе засвистит.
И еще. Как написать то или иное проще всего узнать, записав в том же ёкселе или ворде макрос, нажав всего лишь кнопку "Запись макроса" потом "Останов". И все это посмотреть в редакторе VB.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.037 c