|
Сохранение в эксель с сохранением гиперссылки | ☑ | ||
---|---|---|---|---|
0
PRESTIGE
28.04.15
✎
15:30
|
Ранее создавал тему, где спрашивал как на макете сделать гиперссылку на сайт. Это кое как победил. Теперь нужно этот макет сохранить эксель, и чтобы гиперссылка в экселе осталась работоспособной. Я понимаю что это можно как то через com объект сделать, ну а есть пути проще? Может кто знает.
|
|||
1
AntonH851
28.04.15
✎
15:34
|
(0) Как то через соm...
|
|||
2
asady
28.04.15
✎
15:42
|
(0) обсуждали, делали - очень давно - ищи...
|
|||
3
Ненавижу 1С
гуру
28.04.15
✎
15:43
|
только через COM
|
|||
4
Necessitudo
28.04.15
✎
15:45
|
Стандартно сохрани в эксель, потом обойди полученный файл поячеечно и запиши что нужно. Проще чем делать файл целиком программно.
|
|||
5
asady
28.04.15
✎
15:49
|
||||
6
PRESTIGE
30.04.15
✎
12:58
|
(5) Из твоей ссылки, по этому
олеЕксель = новый COMОбъект("Excel.Application"); олеКнига = олеЕксель.Workbooks.Open("c:\Новый.xls"); олеЛист = олеКнига.Worksheets.Item(1); олеЯчейка = олеЛист.Cells(6, 6); олеВыделеный = олеЯчейка.Select(); олеЯчейка.Hyperlinks.Add(олеЕксель.Selection, "", "Лист2!R4C4", "Описание ссылки", "Ссылка"); Делаю вот так Ссылка = Лист.Cells(НомерСтроки,3).Comment.Shape.OLEFormat.Object.Caption; Лист.Cells(НомерСтроки,3).Hyperlinks.Add(Лист.Cells(НомерСтроки,3), "", "'Прайс общий'!R1C1", "ссылка", Ссылка); В ссылке у меня точно лежит ERL. Выдает ошибку {Форма.ФормаЗаполнения.Форма(361)}: Ошибка при вызове метода контекста (Add) Лист.Cells(НомерСтроки,3).Hyperlinks.Add(Лист.Cells(НомерСтроки,3), "", "'Прайс общий'!R1C1", "ссылка", Ссылка); по причине: Неизвестная ошибка |
|||
7
PRESTIGE
30.04.15
✎
13:13
|
ап
|
|||
8
Кирпич
30.04.15
✎
13:56
|
может Книга.Hyperlinks.Add
|
|||
9
Кирпич
30.04.15
✎
13:56
|
||||
10
Кирпич
30.04.15
✎
13:58
|
(8)+
т.е. Лист.Hyperlinks.Add |
|||
11
PRESTIGE
30.04.15
✎
15:48
|
(10) Вообщем и это да, и книгу еще открывать нужно.
|
|||
12
trdm
30.04.15
✎
16:22
|
// вЛистХЛС = ОкноЕхс.Workbooks(ВыбФ).Sheets(1);
Если (Лев(Зн1С,11) = "http://www.") ИЛИ (Лев(Зн1С,7) = "http://") Тогда вСтрДиап = НазваниеСтолбца(СчКолонок)+Строка(СчРядов); вСтрДиап = вСтрДиап + ":"+вСтрДиап; вЛистХЛС.Hyperlinks.Add(вЛистХЛС.Range(вСтрДиап),Зн1С); ЯЧейка1 = вЛистХЛС.Cells(СчРядов,СчКолонок); ЯЧейка1.Value = "Подробное описание"; ИначеЕсли (Лев(Зн1С,12) = "%http://www.") ИЛИ (Лев(Зн1С,8) = "%http://") Тогда Зн1С = Сред(Зн1С,2); вСтрДиап = НазваниеСтолбца(СчКолонок)+Строка(СчРядов); вСтрДиап = вСтрДиап + ":"+вСтрДиап; вЛистХЛС.Hyperlinks.Add(вЛистХЛС.Range(вСтрДиап),Зн1С); ЯЧейка1 = вЛистХЛС.Cells(СчРядов,СчКолонок); ЯЧейка1.Value = "Видео"; КонецЕсли; |
|||
13
PRESTIGE
12.05.15
✎
08:46
|
Всем спасибо за помощь) Теперь вопрос в другом) Пишу формулу) Когда написал для двух ячеек все норм:
Лист.Cells(НомерСтроки,КолонкаСумма).Value = "="+"R"+Строка(СтрЗаменить(НомерСтроки,Символы.НПП,""))+"C"+Строка(КолонкаЗаказ)+"*"+"R"+Строка(СтрЗаменить(НомерСтроки,Символы.НПП,""))+"C"+Строка(КолонкаЦены); А когда пишу для области, то при открытии экселя в ячейке пишеться "#ИМЯ?" Делаю так: Лист.Cells(СтрокаСуммаЗаказа+1,КолонкаСуммаЗаказа).Value ="=СУММ(R"+Строка(СтрЗаменить(НачалоОбласти,символы.НПП,""))+"C:R"+Строка(СтрЗаменить(КонецОбласти,символы.НПП,""))+"C)"; |
|||
14
PRESTIGE
12.05.15
✎
08:51
|
После того, как два раза щелкну мышкой на эту ячейку, то эта ошибка пропадает, и формула работает.
|
|||
15
PaulBC
12.05.15
✎
08:51
|
Лист.Cells(НомерСтроки,КолонкаСумма).FormulaR1C1 = ...
|
|||
16
PRESTIGE
12.05.15
✎
08:58
|
(15) Ничего не поменялось
|
|||
17
PaulBC
12.05.15
✎
09:06
|
НачалоОбласти и КонецОбласти - числа?
|
|||
18
PRESTIGE
12.05.15
✎
09:09
|
(17) Да. Отладка этой формулы у меня показывает "=СУММ(R15C:R20C)". Что собственно встает и в экселе. Но формула видитется правильной, только после того, как два раза щелкну по ней мышкой, и нажму ентер.
|
|||
19
PaulBC
12.05.15
✎
09:18
|
Лист.Cells(НомерСтроки,КолонкаСумма).FormulaLocal = ...
|
|||
20
PRESTIGE
12.05.15
✎
09:22
|
(19) Да, помогло! Спасибо большое!
|
|||
21
PRESTIGE
12.05.15
✎
09:25
|
(19) И еще параллельный вопрос, если случиться ошибка, то в исключение пишу:
Результат.Application.Quit(); Чтобы процесс экселя закрылся и не весел как рабочий, потому что если он не даст ничего делать с файлом пока этот процесс будет висет. Но этот код не убивает эксель. Может какой то другой метод? |
|||
22
PaulBC
12.05.15
✎
09:33
|
(21)
олеКнига.Close(); олеЕксель.Quit(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |