Имя: Пароль:
 
1C
1C 7.7
v7: Получить гиперссылку из ячейки Exel
0 MiracMC
 
13.10.16
15:47
Всем доброго времени суток.

Для чтения EXEL фалов использую вот такой код:

Перем тзДанных;
Процедура ПолучитьДанные()              
    ФС.УстТекКаталог(сКатал);                        
    Если ФС.СуществуетФайл(СокрЛП(сФайл)) = 1 Тогда
        // ************************************************* работаем с EXCEL через ADO *********************************************************
        ИмяТаблицы = "Лист1$";  
        флХедер = 0; // в первой строке будут не данные для заголовков (если флХедер=1, то имена полей будут взяты из первой строки таблицы)
        db=CreateObject("ADODB.Connection");
        rs=CreateObject("ADODB.Recordset");  
        db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(сКатал) + СокрЛП(сФайл) +";Extended Properties=""Excel 8.0;"+?(флХедер=1,"","HDR=NO;")+"IMEX=1;""";
        //db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+НазваниеФайла+";Extended Properties=""Excel 8.0;HDR=NO; IMEX=1;""";
        //HDR=NO - Имена полей имеют вид "F1, F2, F3..." то-есть буква "F" и порядковый номер колонки. Если данный параметр опустить
        // имена полей беруться из первой строки - для таблиц Экселя норма.  
        Пока 1 = 1 Цикл    
            Попытка
                db.Open();
                Прервать;
            Исключение
                
            конецПопытки;
        КонецЦикла;
        rs.ActiveConnection = db;
        rs.CursorType = 3;
        rs.LockType = 2;
        rs.Source = "Select * from ["+ИмяТаблицы+"] where not f3 like ''";
        Попытка
            rs.Open();
        Исключение
            Сообщить("Ошибка при открытии файла " + СокрЛП(сФайл));
        КонецПопытки;
        // Инициализируем колонки
        тзДанных = СоздатьОбъект("ТаблицаЗначений");
        тзДанных.УдалитьСтроки();
        Для iCount = 1 По rs.Fields.Count Цикл
            ИмяКолонки = rs.Fields.Item(iCount-1).Name;
            тзДанных.НоваяКолонка(ИмяКолонки,,,,ИмяКолонки,15,,);
        КонецЦикла;
        // Перебор данных
        rs.MoveFirst();                
        Пока rs.EOF() = 0 Цикл
            тзДанных.НоваяСтрока();
            Для iCount = 1 По rs.Fields.Count Цикл                      
                Если ПустоеЗначение(rs.Fields(iCount-1).Value) = 0 Тогда
                     тзДанных.УстановитьЗначение(тзДанных.КоличествоСтрок(),iCount,rs.Fields(iCount-1).Value);
                КонецЕсли;
            КонецЦикла;
          rs.MoveNext();  
        КонецЦикла;
        rs.Close();
        db.Close();
        db = "";
        rs = "";
        // данне получили, АDO закрыли **********************************************************************************************************
    Иначе
        Сообщить ("Файл " + СокрЛП(сФайл) + " не существует!");
    КонецЕслИ;
КонецПроцедуры

в строке
тзДанных.УстановитьЗначение(тзДанных.КоличествоСтрок(),iCount,rs.Fields(iCount-1).Value);
в ячейку тзДанных записывается значение из ячейки в файле Exel.

Вопрос - как проверить наличие гиперссылки в ячейке и если она есть получить ее?

Сразу скажу что через Excel.Application делать не вариант. Уж больно медленный этот способ.

Заранее благодарен.
1 Это_mike
 
13.10.16
15:48
а Йоксель?
2 MiracMC
 
13.10.16
15:55
(1) а есть пример?
3 MiracMC
 
17.10.16
11:23
АП на всякий случа