Oczywiście znalazłem sporo różnego kodu na googlach, ale jakoś albo nie działa i wywala błąd: Ustawienie właściwości NumberFormat klasy Range jest niemożliwe, albo jak już mi się uda (udało mi się raz z formatowaniem '@' - Tekst).
Ogólnie robię coś takiego (pominięty kod raczej nie ma znaczenia dla sensu, a może zaciemnić obraz):
var Excel: Variant;
Sheet : Variant;
Selection : Variant;
wiersz_num: Integer;
(...)
Excel := CreateOleObject('Excel.Application');
Excel.WorkBooks.Add();
Excel.DisplayAlerts := False;
Sheet:=Excel.Workbooks[1].Worksheets[1];
Excel.Visible:=TRUE;
(...)
wiersz_num:=3;
Selection:=Sheet.Range['A'+IntToStr(wiersz_num)+':J'+IntToStr(wiersz_num)];
Selection.Borders.Weight := xlThin;
Selection:=Sheet.Range['A'+IntToStr(wiersz_num)+':A'+IntToStr(wiersz_num)];
NumberFormat:='General';
Selection.NumberFormat:=NumberFormat;
Selection:=Sheet.Range['B'+IntToStr(wiersz_num)+':B'+IntToStr(wiersz_num)];
NumberFormat:='@';
Selection.NumberFormat:=NumberFormat;
Selection:=Sheet.Range['C'+IntToStr(wiersz_num)+':J'+IntToStr(wiersz_num)];
Kombinowałem z Excel.Range, teraz jest Sheet.Range. Zadziałało jak zrobiłem '@' dla całego zakresu, ale wtedy zamiast liczb i dat pojawiała się wartość 64 (kod ASCII znaku: '@')
Zaczynam się kręcić w kółko, bo na googlach nie potrafię znaleźć konkretnego rozwiązania, a wszystkie moje pomysły nie działają.
Spotkaliście się z czymś takim ?
P.S. Aha - używam Excel 2010.