Имя: Пароль:
1C
1С v8
Открыть Excel через ADODB в 1С х64
0 LevelUP
 
02.02.17
12:43
Здравствуйте.
Раньше в х32 1С открывал Excel таким кодом

Стр_Конект = "Driver={Microsoft Excel Driver (*.xls)};
            |DriverId=790;
            |Dbq="+Стр_Файл+";
            |DefaultDir="+Стр_Путь+";";
            Об_Конект = Новый COMОбъект("ADODB.Connection");
            Попытка
                Об_Конект.Open(Стр_Конект);          
            Исключение
                Сообщить ("Невозможно подключится к Microsoft Excel Driver!!!
                |Возможно файл ["+Стр_Файл+"] открыт другим пользователем.");
                Возврат;
            КонецПопытки;


Теперь выдает ошибку на этапе Об_Конект.Open(Стр_Конект);

Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Драйвер ODBC Excel] Файл '(нет данных)' не может быть открыт ядром базы данных Microsoft Jet.  Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных.
Куда копать? Что подправить в строке коннекта?
1 shuhard
 
02.02.17
13:10
(0) ODBC тут лишнее
MyCon = Новый COMОбъект ("ADODB.Connection");
    Попытка
                
        MyCon.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source="+ОБъект.ПутьКфайламБюджета+";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1;""");
        
    Исключение
        Сообщить("Не удалось открыть файл->"+ОБъект.ПутьКфайламБюджета+" Проверьте путь и тип файла");
        Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
        Возврат;    
    КонецПопытки;
2 LevelUP
 
02.02.17
13:46
(1)Спасибо. На х32 код работает, а на х64 нет.

Ругается
Произошла исключительная ситуация (Microsoft OLE DB Service Components): Заглушке переданы неправильные данные.

Может что-то кроме Microsoft.ACE.OLEDB.12.0 надо в com+ прописать?
3 NorthWind
 
02.02.17
13:51
(2) а драйвер ACE х64 скачан и установлен?
4 LevelUP
 
02.02.17
13:53
(3) я в службе компонентов его com+ сопоставил по типу Книга знаний: Вызов 32-битных COM-объектов на стороне 64-битного сервера 1С. Без этого ругался на Provider=Microsoft.ACE.OLEDB.12.0.

Теперь вот на заглушку
5 aka AMIGO
 
02.02.17
14:14
Извините, а в файловом варианте эта штука не работает?
6 LevelUP
 
02.02.17
14:16
(5) у меня файловый вариант как раз
7 aka AMIGO
 
02.02.17
14:20
(6) У меня как раз 64.

Попробовал и я, тоже не срабатывает. Причина другая.
Сообщений 2:
Не удалось открыть файл->C:\DB\Азы\ExtReps\PL VAP FY17.xlsx Проверьте путь и тип файла

Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

Но у меня нет ACE
8 aka AMIGO
 
02.02.17
14:22
(6) может тебе поможет: http://www.cyberforum.ru/ado-net/thread125575.html
Я в этом плаваю по-топорному.
9 aka AMIGO
 
02.02.17
14:28
(0) чем вызвана необходимость использовать этот "Driver" ?
Нет Excel"я ?
10 LevelUP
 
02.02.17
14:29
(8) ну драйвер похоже ставить надо Microsoft.ACE.OLEDB.12.0 х64. Но для этого надо офис снести х32, неохота.

Через обертку com+ избавился от ошибки "поставщика". Но появились другие.
11 aka AMIGO
 
02.02.17
14:30
(10) Понял..
12 LevelUP
 
02.02.17
14:30
(9) Да, изначально у заказчика не было Екселя. Но сейчас уже есть, поэтому переписываю обработку под Excel.application
13 aka AMIGO
 
02.02.17
14:41
А так не пойдёт? Поскольку Excel установлен..

    Попытка
        Excel = Новый COMОбъект("Excel.Application");
    Исключение
        Сообщить("Не найден Microfoft Excel.");
        Возврат Ложь;
    КонецПопытки;
    
    Попытка
        WorkBook = Excel.WorkBooks.Open(ФайлExcel );
    Исключение
        Сообщить("Excel не удалось открыть файл " + ФайлExcel );
        Возврат Ложь;
    КонецПопытки;
    
    ТекЛист=Excel.WorkSheets(1);
...
14 aka AMIGO
 
02.02.17
14:42
+13 или ты под это и пишешь?
15 DailyLookingOnA Sunse
 
02.02.17
14:49
Платформа какая?
С 8.3.6 уже можно этим пользоваться:

ДанныеФайлаТабличныйДокумент = Новый ТабличныйДокумент;
ДанныеФайлаТабличныйДокумент.Прочитать(ИмяВремФайла);
16 LevelUP
 
02.02.17
14:57
(13) да, так и переписываю. Подумал, что быстрее переписать, чем разбираться с ADO.
17 LevelUP
 
02.02.17
15:01
(15)платформа 8.3.9 х64. Хороший способ, надо попробовать, без всяких COM и определений количества строк и колонок. Спасибо!