![]() |
![]() |
|
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"), или я чегойто не понимаю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |