Як програмно приховати стовпці в excel

Як програмно приховати стовпці в Excel?

Питання: як програмно з Делфі приховати стовпці в Excel-файлі?
Вся складність в тому, що до стовпців можна звертатися за номерами, як до рядків. Або якщо можна, то скажіть як.

Приклад приховування рядків з 20 по 30 в Excel:
Ex.Rows [ "20:30"]. Select;
Ex.Selection.EntireRow.Hidden: = True;

Буду дуже вдячний, якщо і для стовпців напишіть що-небудь подібне.

Можна спробувати звернутися по буквах ;-)

мені просто при формуванні звіту треба приховувати 4 шпальти через кожні 3 в циклі. і як до них по буквах то звертатися.

"
Columns ( "A: C"). Select
Selection.EntireColumn.Hidden = True
End Sub

через букви і так ясно що можна, але мені треба тільки через цифри до стовпців звертатися.


> Побудова дерева (11.02.04 11:02) [4]
> Через букви і так ясно що можна, але мені треба тільки через
> Цифри до стовпців звертатися.

Ах які такі круті бажання: - |
А цифри в букви переводити все ще не навчилися?

я робив такий переклад, але він незручний і косячіт в деяких шпальтах (особливо коли йдуть стовпи з двома буквами). я просто знаю що можна якось через цифри це зробити. але ось тільки як?

що нитка на зразок цього.

function ColNumberToColName (ColNumber: Word): string;
const
CharCount = ord ( "Z") - ord ( "A") + 1;
begin
if ColNumber <= CharCount then
Result: = Char (ord ( "A") + ColNumber - 1)
else
Result: = Char (ord ( "A") + ColNumber div CharCount - 1) + Char (ord ( "A") + ColNumber mod CharCount - 1)
end

jack128 - немає, тільки через цифри. команда повинна бути чимось схожа на цю:
WorkBook.WorkSheets [1] .Range [WorkBook.WorkSheets [1] .Cells [y1, x1], WorkBook.WorkSheets [1] .Cells [y2, x2]];
(Вона об'єднує осередки. Спочатку теж думав, що через цифри не можна так зробити, а виявляється можна, також і зі стовпцями має бути)

Да блін. в тому ж об'єкті, де ти пишеш Ex.Rows також є властивість Columns [] до якого я завжди звертаюся через цифри, тобто Ex.Columns [1], Ex.Columns [2] і т.д.

Ну може такий код прокотить?
RangeName: string;
for i: = 1 to 50 do
CelRangeName: = ColNumberToColName (i * 7) + ":" + ColNumberToColName (i * 7 + 2) + ",";

SetLength (RangeName, Length (RangeName) - 1);
Ex.Range (RangeName) .EntireColumn.Hidden = True;

Через цифри ще якомога:

olookin: а як наприклад з m по n вибрати?

Так як я написав - не можна змінювати ширину стовпців. Треба так:

З m по n зрозуміло в циклі

for i: = 1 to 10 // починати завжди з 1 або більшого значення i
Excel.Workbooks [BookIndex] .Sheets [SheetIndex] .Columns [i] .ColumnWidth: =
MyColumnValue;

Або так, тобто без циклу, тобто швидше

V: Variant;
V: = Excel.Workbooks [BookIndex] .Sheets [SheetIndex];
// поміняє ширину з першого по 5-й стовпець
V.Range [V.Cells [1,1], V.Cells [1,5]]. ColumnWidth: = 5;

Або це: приховає з першого по п'ятий стовпець
V: = Excel.Workbooks [BookIndex] .Sheets [SheetIndex];
V.Range [V.Cells [1,1], V.Cells [1,5]]. EntireColumn.Hidden: = true;

olookin спасибі, все працює.