Top.Mail.Ru
Ответы

Как перенести EXCEL VBA в DELPHI?

Множество статей перелопатил, нашел примеры как работать с конкретными ячейками, мне же сначала необходимо определить какие ячейки не пусты, поэтому в макросе используем selection.
- - -
Есть код для экспорта из delphi (ado) в excel, код рабочий:
var
i,j,s:integer;
XL,xlb:variant;
begin
XL:=CreateOleObject('Excel.Application'); // создать EXCEL
XL.DisplayAlerts := false; // Сохранение документа
xlb:=xl.workbooks.add; // создаем новый документ
xl.visible:=false; // скрываем окно программы
ADOQuery.RecNo:=1; // начинаем с первой записи
//Ширина столбцов
for j:=1 to ADOQuery.FieldCount do
xlb.WorkSheets[1].Columns[j].ColumnWidth := 17;
//Имена столбцов
for i:=0 to ADOQuery.FieldCount-1 do
xlb.WorkSheets[1].Cells[1,i+1]:=ADOQuery.fields[i].FieldName;
s:=2;
//Вывод записей из ADO в Excel
for i:=0 to ADOQuery.RecordCount-1 do
begin
for j:=0 to ADOQuery.FieldCount-1 do
xlb.WorkSheets[1].Cells[s,j+1]:=ADOQuery.Fields[j].AsString;
inc(s);
ADOQuery.Next;
end;
xl.visible:=true;
end;

Записал макрос, нужны доп. команды для оформления.
Прошу помощи в переносе кода VBA to DELPHI
Sub test()
'
' test Макрос
'
ActiveSheet.Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
Selection.Replace What:="_", Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Borders(xlDiagonalDown).LineStyle = xlNone
Selection.Borders(xlDiagonalUp).LineStyle = xlNone
With Selection.Borders
.LineStyle = xlContinuous
.ColorIndex = 0
.TintAndShade = 0
.Weight = xlThin
End With
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftMargin = Application.InchesToPoints(0.25)
.RightMargin = Application.InchesToPoints(0.25)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
.Orientation = xlLandscape
.PaperSize = xlPaperA3
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = False
End With
End Sub

Дополнен

$$$ michaelplanet@mail.ru

По дате
По Рейтингу
Аватар пользователя
Искусственный Интеллект
8лет

Все те же самые команды ты можешь вызывать прямо из Дельфи с минимальными синтаксическими изменениями. Есть даже такой способ: если не знаешь, как сделать что-то с Экселем на Дельфи, запиши в Экселе макрос, потом открой его код и тупенько переписывай оттуда команды.