Имя: Пароль:
1C
 
Excel как получить диапазон?
Ø
0 дущ
 
15.04.05
00:28
Есть 4-ре числа (n,m,p,q): первое и второе определяют координаты левой верхней ячейки, третье и четвёртое определяют координаты правой нижней ячейки.
Задача: из 1С-а создать в екселе книгу и выделить диапазон ячеек определённый этими числами;
Решение:
  ОкноЕкселя=СоздатьОбъект("Excel.Application");
  РабочиеКниги=ОкноЕкселя.Workbooks;
  РабочаяКнига=РабочиеКниги.Add();
      ОкноЕкселя.Range(ОкноЕкселя.Cells(m, n), ОкноЕкселя.Cells(p, q)).Select;
НЕ РАБОТАЕТ
и не работает именно последняя строка, хотя в VBA аналогичная конструкция замечательно работает, например макрос
    Application.Range(Application.Cells(1, 5), Application.Cells(5, 7)).Select
очень даже замечательно работает, так почему не работает в 1С и как сделать что бы заработало?
Помогите, люди добрые, замучался уже...
1 Michael
 
15.04.05
00:59
А ты сначала напиши так же
ОкноЕкселя.Range(ОкноЕкселя.Cells(1, 5), ОкноЕкселя.Cells(5, 7)).Select;
А то m,n...может они все 1 равны :-) (шутка)
2 дущ
 
15.04.05
01:10
(1) как только не писал, уже часа 3 с этой, в принципе, пустяковой проблемой ёрзаю... а толку... :'(
3 AlexVV
 
15.04.05
01:25
А зачем надо выделение?
4 AlexVV
 
15.04.05
01:29
Вот пример операции над областью:
// Шапка отчета влево
Область = ОкноExcel.Range("A1:D4");
Область.HorizontalAlignment=КонстантаExcel("xlLeft");
5 дущ
 
15.04.05
01:38
(4) вообще строго говоря там у меня далеко не выделение, но для упрощения можно считать что выделение;
конструкция Область = ОкноExcel.Range("A1:D4") очень даже неплоха, но у неё есть один минус, я не могу указать диапазон по переменным номерам столбцов, т.е. когда конкретные номера столбцов у меня определяются в момент работы программы, т.е. номер столбца (A) у меня записан в переменную m, а значение второго столбца (D) у меня хранится во второй переменной q.
6 leosoft
 
15.04.05
01:53
(5) Диапазон - это строка ... Поэтому можно попробовать формировать
строку программно, например, S1=..., а потом написать Range(S1).
7 дущ
 
15.04.05
05:07
полностью согласен с (6), только как её сформатировать? Переводить цифры 1,2, 3, 4 в буквы A, B, C, D? А если у меня цифра 2549, какие это буквы?
8 дущ
 
15.04.05
18:08
+
9 panda
 
15.04.05
18:17
Зачем буквы?????
Если у тебя цифры, так и пиши цифры R2549C2549
10 дущ
 
15.04.05
18:19
(9) рад бы, однако ексель такое ограничение накладывает, что в Range(), нельзя указывать адреса в стиле R1C1, вот и думаю как бы это обойти...
11 panda
 
15.04.05
18:22
Вообще, есть много вариантов, например:
r = w.Cells(с, к); r = r.Resize(выс, шир);
12 дущ
 
15.04.05
18:39
(11) Урраааа! Заработало... Метод, конечно, не очевидный, но зато работает...
Спасибо panda...
13 panda
 
15.04.05
18:45
Если нужен только select можно сделать
Application.Goto("R1C2")
14 Anomaly
 
15.04.05
18:47
(12) если не секрет, как вам удалось получить 2549 столбцов в Excel? ))
15 primus
 
15.04.05
18:51
А подскажите как в ячейку Екселя записать число
Если можно - пример
16 AlexVV
 
15.04.05
20:17
Ячейка = ОкноExcel.Cells(ТС, 4);
Ячейка.Value=Формат(Табл.Итого,"N0.2");
17 AlexVV
 
15.04.05
20:21
Ячейка = ОкноExcel.Cells(ТС, 4);
Ячейка.NumberFormat = "0";
Ячейка.Value=10;
18 smaharbA
 
15.04.05
20:26
а что так небывает - Область = ОкноExcel.Range("A"+строка(m)+":"+строка(q)+"D4"), или я чегойто не понимаю
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший