Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> OLE Excel сохранение в файл, некорреектно сохраняет 
:(
    Опции темы
JUmPER
Дата 3.10.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



при использовании OLE с диаграммой excel сохранение не работает корректно
в результате получается файл, который excel не может открыть (ничего не говорит, просто открывается пустой воркспейс -- т.е. без документа)
Код

Dim OleWorkBook As Excel.WorkBook

Set OleWorkBook = oleStatisticsChart.object

Call OleWorkBook.SaveAs(cdMain.FileName)
Call OleWorkBook.Close

--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 3.10.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Вот смотри...
У меня есть на форме OLE-объект с именем OLE1
НЕ ВАЖНО КАКОЙ!!!

Я его буду сейчас сохранять...

Код

Private Sub OLEFileSaveAs()
Dim fnum as Integer
     on error goto Cancel
     fnum = freefile
     commondialog1.showsave
     ' Вывод на экран диалогового окна Save as
     open commondialog1.filename for binary as #fnum
     ole1.savetofile (fnum)
     close #fnum
     exit sub
Cancel:
     msgbox "Не смог сохранить файл...
     close #fnum
end sub ()


Вопросы ещё есть?

Это сообщение отредактировал(а) mihanik - 3.10.2006, 13:06


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 3.10.2006, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



сохранять-то сохраняет (файл появляется), да вот самим экселем его не открыть -- ругается.
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 3.10.2006, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Угу...
Понятно.
Это он просто в своём внутреннем формате сохраняет.
А чтобы ехелем открыть надо что-то типа такого..

Код

Private Sub Command1_Click()

Dim wBook As Workbook

    Set wBook = OLE1.object
    
    wBook.SaveAs FileName:= _
        "ИМЯ ФАЙЛА", FileFormat:=xlNormal _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False
    

    wBook.Close
    Set wBook = Nothing
End Sub


Проверил.
У меня работает.


В референсах только ехель подключить надо...

Добавлено @ 15:18 
Блин...
Извини! Что-то у меня подглючивает...
Буду думать...


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 3.10.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



у меня то же, что и было вначале (excel не ругается, но файл не открывает)
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 3.10.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Вот так работает!!!!!


Код

Option Explicit

Private Sub Command1_Click()
Dim OleWorkBook As Excel.Workbook

Set OleWorkBook = OLE1.object

OleWorkBook.SaveAs "C:\Documents and Settings\Миханик\Desktop\222.xls", FileFormat:=35 _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

Call OleWorkBook.Close


End Sub



FileFormat:=35  - это формат книги ехеля...

У меня работает.
Лист правда был без диаграммы...

ПРОВЕРЬ И ОТПИШИСЬ О РЕЗУЛЬТАТАХ!!!


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 3.10.2006, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



"Microsoft Excel for windows - обнаружена ошибка...Отправить отчёт..." при попытке его открыть excel'ем smile 
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 4.10.2006, 06:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Хм... smile 

Если не сложно вышли мне "работающий" кусок товего кода.
Лучше в виде проекта VB.

Поближе посмотреть хочу... И  smile  его...


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 4.10.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



я специально создал новый прект и вставил в него твой код
поменял только имя файла
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 4.10.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Странно... smile  smile 

Когда я создаю лист ехеля  и сохраняю его, но при этом на листе нет диаграмм, то лист потом нормально открывается.
Если же я вставляю диаграмму, то действительно ехель обрушивается...
Может диаграмму ехеля стоит внедрять как отдельный ОЛЕ-объект?

Будем думать... smile 

Офис у тебя какой?
У меня 2003...


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
mihanik
Дата 4.10.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Смотри!!!
У меня работает даже с диаграммой !!!


Код

Option Explicit

Private Sub Command1_Click()
Dim OleWorkBook As Excel.Workbook

Set OleWorkBook = OLE1.object

OleWorkBook.SaveAs "C:\Documents and Settings\Миханик\Desktop\222.xls", FileFormat:=-4143 _
        , Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _
        CreateBackup:=False

Set OleWorkBook = Nothing

End Sub


Добавлено @ 11:01 
Т.е. играем с форматом файла...


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 4.10.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



то же самое
видимо, мой офис не работает как надо (у меня 2000ый)
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 4.10.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Знаешь, что!!!

Запусти ехель. нажми <Alt><F11>.
Зайдёшь во втроенный в ехель VB.
Выбери View / Object Browser/
При помощи поиска найди описание xlNormal.
Он нам напрямую не нужен. Нам нужен класс XLFileFormat.


Далее посмотри на то, какие форматы файлов поддерживает твой ехель.
У меня получилось около 40-50 форматов.
В своей программе после FileFormat:= попробуй использовать различные значения.

ЗАМЕЧАНИЕ!!!
В программе используй не имена констант, а их числовые значения (видны внизу при выделении конкретной константы.)

Для 2003 офиса у меня получилась константа с именем xlWorkbookNormal.


Const xlWorkbookNormal = -4143 (&HFFFFEFD1)

Поэксперементируй.

Команду Call OleWorkBook.Close НЕ ИСПОЛЬЗУЙ!!!

И ещё!!!

В референсах не забывай подключать ехель.

У меня это Microsoft Excel 11.0

Прицепил свой проект. Может поможет...

Это сообщение отредактировал(а) mihanik - 4.10.2006, 11:59

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  ole.rar 3,06 Kb


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 4.10.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



в списке поддерживаемых есть та же константа с тем же значением,
но результат тот же -- excel открывается с пустым воркспейсом
так что скорее всего это баги в самом экселе...

PS: в приаттаченом тобой проекте одного из файлов формы не хватает (не текстового -- с этим в порядке)

Добавлено @ 12:47 
кстати, файл всегда получается одного размера -- 7.680к
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 4.10.2006, 13:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



А вот так...

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  ole.rar 3,04 Kb


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 4.10.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



то же самое smile 
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 4.10.2006, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Если у тебя при открытии моего проекта не хватает какого-то файла, то посмотри на его имя и просто вручную его добавь в проект из папки, в которую проект распаковал.

Если же проект загружается и запускается нормально, то 
ОЧЕНЬ ПОДРОБНО опиши свои действия, которые ты выполняешь при запущенной своей программе.

Кроме того.
Выложи сюда свой проект.
Пусть даже он будет сделан копированием моего кода.
Хочу посмотреть всё досканально...

Во вложении exe-шник.

файл складывает на С с именем 222.xls

Это сообщение отредактировал(а) mihanik - 4.10.2006, 14:30

Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Project1.exe 24,00 Kb


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 4.10.2006, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



1) брал твой проект (в исходниках) -- сохраняет файл стандартного (7.680к)  размера, который открывается excel'ем как пустой воркспейс
2) запустил экзешник, нажал на кнопку -- получил окошко, что в бинарнике обнаружена ошибка и с вопросом, нужно ли отправлять отчёт мелкомягким.


по ходу
1) это глюки самого excel'я
2) это несовместимость версий класса внутри ole контейнера
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 5.10.2006, 06:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



БЛИН!

Загадка природы...

Попробуй переустановить офис!


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 5.10.2006, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



по ходу если приложение должно работать везде, то про ole нужно забыть... smile 
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 5.10.2006, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Или указывать минимальные требования, при которых будет приложение функционировать.  smile 

А может твою задачу можно как-то по-другому сформулировать?
Решить другими средствами?  smile 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 5.10.2006, 09:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



mihanik
как вариант (а я так и сделаю): excel документ будет только в памяти, а не в ole
а на форме MSHFlexGrid и MSChart...

PS: я хотел всё сделать проще без всяких там конвертеров-деконвертеров, но не выходит
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 5.10.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Удачной тебе охоты,  JUmPER!!! smile 




--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
JUmPER
Дата 5.10.2006, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



Пасиб  smile 
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
mihanik
Дата 5.10.2006, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



СЛУШАЙ!

Сейчас глупая идея пришла!!!

Используй OLE! Только по-хитрому!!!

Всё это дело в ОЛЕ создаёшь, а потом перед сохранением создаёшь в памяти объект "книга ехель".
Копируешь из ОЛЕ всё в эту книгу.
Сохраняешь книгу на диск.

Идея ясна?

Практическое воплощение пока не продумывал, но предполагаю, что оно возможно...



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
alexshm
Дата 5.10.2006, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 5.10.2006

Репутация: нет
Всего: нет



У меня была аналогичная ситуация - чтобы файл созданный по OLE отображался, нужно пред сохранением явно сделать его видимым. Только не помню - Window.Visible или Workbook.Visible. Если не получится - пишите, я вечером дома посмотрю.

У Excel есть еще такой глюк - после обращения по OLE он не убивает процесс приложения - то есть на экране ничего нет, а в памяти несколько экземпляров болтается. И Ваша книга создается в невидимом экземпляре. Может в этом проблема?


PM MAIL   Вверх
JUmPER
Дата 5.10.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 196
Регистрация: 22.8.2006

Репутация: 1
Всего: 3



mihanik
тут проблема в том, что копируется только ссылка на объект
а метода clone у воркбука нет


alexshm
у воркбука такого метода нет (видимо имеется в виду Excel.Application)
напиши поподробнее
--------------------
Существует 10 типов людей: те, которые понимают двоичную систему, и те, которые ее не понимаютСуществует 10 типов людей: те, кто понимают троичную систему, те, кто ее не понимают и те, кто путает ее с двоичной
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1010 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.