OLE, VB, Excel

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
UserVB
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 01.09.2004 (Ср) 0:04

OLE, VB, Excel

Сообщение UserVB » 01.09.2004 (Ср) 0:12

Имеется форма, на неё вставляю OLE-объект (типа excel-a); сделал кнопочку, при нажатии на которую этот OLE через SaveToFile записывается в файл

Open FileName For Binary as #1
OLE1.SaveToFile 1
Close 1

:?: И вопрос! Почему тот файл, я не согу открыть через MsExcel? Ругается что не поддерживаемый формат.
Средства: w2k, MsOffice 2000, VB 6

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.09.2004 (Ср) 9:19

SaveToFile - это оболочка для... не помню точное название... но оно сохраняет в файл именно сам объект OLE, а не файл Excel. То есть открыть это сможет только объект OLE же.
Excel у него внутри, сначала доберись до него (если не ошибаюсь, OLE1.Object), а потом его методы вызывай.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 01.09.2004 (Ср) 19:13

GSerg писал(а):SaveToFile - это оболочка для... не помню точное название...

Я подозреваю, для IPersistStorage::Save?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 01.09.2004 (Ср) 19:17

Да! Именно для него :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

UserVB
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 01.09.2004 (Ср) 0:04

Сообщение UserVB » 05.09.2004 (Вс) 23:39

Чего то я не разберусь с этой системой. Сделал я форму, положил на неё OLE1, обозначил как Лист Excel. Добрался до её полей

Set obj = OLE1.object
Set App = obj.Application
Set Wb = App.Workbooks
Set ShWb = Wb.Item(1).Sheets(1)
ShWb.Cells(i, j) = k

Но когда пытаюсь сотворить obj.SaveAs("FileName") - нифига. Лист - пустой.
Поэтому извратился и сделал так:

Set obj = OLE1.object
Set App = obj.Application
Set Wb = App.Workbooks.Add
Set Shobj = obj.ActiveSheet
Set ShWb = Wb.sheets(1)
Shobj.Cells(i, j) = k
ShWb.Cells(i, j) = k
Wb.SaveAs ("FileName")

Т.е. заполняю два листа, а потом один из них сохраняю. Получается, что объект OLE, лежащий на форме, используется только как дисплей.
:?: Где я чего не понял? Ковырялся в инете в поисках ссылки или примеров - не получилось.
Объясните, пожалуйста! Хочется сделать красиво и разумно. А то уж для времянки просто форму затолкал в екселовскую книгу.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 07.09.2004 (Вт) 6:15

UserVB писал(а):Но когда пытаюсь сотворить obj.SaveAs("FileName") - нифига. Лист - пустой.

Что-то у тебя не так. У меня этот код работает правильно, только что проверил.
Изображение

UserVB
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 01.09.2004 (Ср) 0:04

Сообщение UserVB » 07.09.2004 (Вт) 20:26

Короче, колдыбаясь с этим OLE понял, что OLE - очередная фигня от микрософта, поэтому сделал окошко для получения даных через ListView. Получилось просто замечательно, а данные (все-таки через OLE, т.к. необходимо создавать Excel-лист) запихиваю в книгу. :wink:


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 24

    TopList