|   |   | 
| 
 | Сохранение в эксель с сохранением гиперссылки | ☑ | ||
|---|---|---|---|---|
| 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(); | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |