![]() |
![]() |
Beholder 22.09.2004 - 14:50 |
Доброго всем времени суток. Возникла проблема. Выгружаем данные из 1С(самописная конфа) в ексель. Затем из екселя посредством АДО всандаливаем в 1С. примерно так: db=CreateObject("ADODB.Connection"); rs=CreateObject("ADODB.Recordset"); db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+имяфайла+";Extended Properties=""Excel 8.0;"""; db.Open(); rs.ActiveConnection = db; rs.CursorType = 3; rs.LockType = 2; rs.Source = "Select * from [sheet1$]"; rs.Open(); ..................... Так вот, в екселевском файле нет явно выраженного листа. Т.е. есть только таблица. Соответственно не работает метод rs.Source = "Select * from [sheet1$]";, т.к. Sheet1 попросту нет. Пробывал Activesheet - тож ругается. Зы. Сильно не бейте, проблема возникла часа 2 назад, а я в ado не силен... |
Тухлыи 1 - 22.09.2004 - 14:52 | В файле должен быть хоть один лист. |
Gloom 2 - 22.09.2004 - 14:56 | (0)В ёкселе - меню "Сервис" - Параметры - Вид - флаг "ярлычки листов" |
Beholder 3 - 22.09.2004 - 14:56 | Дык есть, только он внизу не показан. То етсь ты открываешь книгу в екселе внизу слева написано "лист1, лист2, лист3". А в моем случае такого нет. Есть один лист и он никак не обозначен. Можно конечно обозначить его через (ексель) Окна - новое. Тогда он, конечно, становится лист1, но каждый раз лазить туда... |
Beholder 4 - 22.09.2004 - 15:01 | 2 Gloom - ага, фиг вам называется, старинная индейская изба. Как было так и остается. |
Gloom 5 - 22.09.2004 - 15:03 | (4)В нижнем левом углу книги, под номерами строк, пимпочка должна была появиться. При наведении на неё указатель мыши меняет форму. Взять эту пимпочку и тянуть вправо до появления чувства глубокого удовлетворения... |
Beholder 6 - 22.09.2004 - 15:07 | 5 - Ну да, появились, но при каждой загрузке так делать? Нет ли метода типа activeSheet? |
Gloom 7 - 22.09.2004 - 15:15 | (6)Нет, надо или имя листа, или имя диапазона указывать. Не пойму, если вы сами листы из 1цэ получаете, почему не знаете как они называются... |
Beholder 8 - 22.09.2004 - 15:23 | Получаем файл не мы, а козлы с другого города. Они нам его по электронке присылают каждые 3 часа, затем это все и грузится. А к ним не можем дозвониться. Поэтому я и спросил. Так бы сказал им чтоб файлы нормальные делали. Фу-уф. |
Gloom 9 - 22.09.2004 - 15:25 | (8)Ну, тогда определяйте название прграммно через OLE или через ADOX... |
Vladis 10 - 22.09.2004 - 15:39 |
Ну если не видно его названия это не значит что названия нет. Я поэксперементировал, название листа всегда sheet1 (у меня английская версия Экселя) |
Vladis 11 - 22.09.2004 - 15:47 |
Вот так можно получить список листов обЭксел = СоздатьОбъект("Excel.Application"); For i = 1 To обЭксел.Workbooks(CurStrCB_Books).Sheets.Count Do Message(обЭксел.Workbooks(CurStrCB_Books).Sheets.Item(i).Name); EndDo; Здесь CurStrCB_Books номер книги. |
Beholder 12 - 22.09.2004 - 16:01 | Спасибо всем! Особенно Владису и Глуму :-). |