Работа с “Word”, “Excel” и ActiveX, страница 3

20)  - Оператор сортировки по номеру группы и по фамилии

21)  - into – оператор указывает, где следует хранить результаты запроса, ARRAY – массив а

22)  - переменная TALLY содержит количество записей, обработанной последней табличной командой, т.е. это число записей, отображенных из таблицы rukovoditely

23)  - переход на новый абзац

24)  - пустая строка (пропуск)

25)  по 26) - создаем две переменные и присваиваем им значение количества строк и столбцов в массиве а с помощью функции VTF Alen()

27)  - создаем с помощью метода Add (VisBas) таблицу с rowsCount+1 строками (+1 – строка для шапки таблицы, rowsCount – для данных) и colsCount столбцами

28)  - создаем переменную T и присваиваем ей текущую таблицу с помощью метода (VisBas) – Tables(1)

29)  - работаем с переменной T (таблица)

30)  по 39) - с помощью функции .cell (N_строки, N_столбца), свойства Text и Bold создаем в Word шапку таблицы

40)  - создаем переменную j для работы с номером строк

(первая строка таблицы уже создана операторами 30)-39), работаем со 2-ой строки)

41)   - организуем начало цикла для управления строкам таблицы от 2-ой строки до rowsCount+1

42)  по 46) - последовательно заполняем 5 ячеек каждой строки таблицы в Word из массива а

47)  конец цикла FOR

48)  окончание тела команды WITH задающей свойства объекта T (оператор 29))

49)  снимает в операторе 7) добавление .Selection

50)  переход на новый абзац

51)  удаляет из памяти массив а

52)  если условие, указанное в строке 22) не выполняется, то

53)  по 55) пропуск абзаца, печать текста в скобках, пропуск абзаца

56)  конец тела оператора условия IF

57)  окончание тела команды WITH (оператор 7))

58)  окончание тела команды WITH (оператор 5))

59)   

Листинг программы экспорта в Excel

Процедуру необходимо адаптировать к Вашему проекту.

1)  loExcel=CREATEOBJECT("Excel.Application")

2)  loExcel.displayAlerts=.F.

3)  with loExcel

4)  .Visible=.t.

5)  .WorkBooks.Add

6)  .Sheets(1).Select

** Выполнение запроса для занесения в таблицу Excel

7)  Use data1!rukovoditely

8)  SELECT TRIM(r_fam)+' '+TRIM(r_im)+' '+TRIM(r_ot),TRIM(s_fam)+' '+TRIM(s_im)+' '+TRIM(s_ot),TRIM(group);

9)  FROM data1!rukovoditely;

10)  order by r_fam;

11)  INTO ARRAY a

12)  rowsCount=ALEN(a,1)

13)  colsCount=ALEN(a,2)

** Код программы получен как макрос VBA

14)  .Columns("A:A").ColumnWidth = 30

15)  .Columns("B:B").ColumnWidth = 30

16)  .Columns("C:C").ColumnWidth = 14

17)  .Range("A1").Select

18)  .ActiveCell.FormulaR1C1 = "Руководитель"

19)  .Range("B1").Select

20)  .ActiveCell.FormulaR1C1 = "Дипломник"

21)  .Range("C1").Select

22)  .ActiveCell.FormulaR1C1 = "Группа"

23)  .Range("D1").Select

24)  j=2

25)  FOR j=2 TO rowsCount+1

26)  .Range("A1").Select

27)  .Activecell(j,1).FormulaR1C1= a[j-1,1]

28)  .Range("B1").Select

29)  .Activecell(j,1).FormulaR1C1= a[j-1,2]

30)  .Range("C1").Select

31)  .Activecell(j,1).FormulaR1C1 = a[j-1,3]

32)  ENDFOR

33)  RELEASE a