Страницы: 1
RSS
Как правильно выгрузить (удалить) изображение из Объекта Image
 
Доброго времени суток, всем.
У меня возник такой вопрос в работе.
При запуске книги - из папки загружаю изображение в Image:
Worksheets("Settings").Image1.Picture = LoadPicture(Environ("tmp") & "\Меню_приветствия.jpg")  
При выходе их книги - мне нужно выгрузить изображение
Я пишу:
Worksheets("Settings").Image1.Picture = LoadPicture("")  
При этом размер сохраненной книги увеличивается на размер изображения.
Мне необходимо вернуть размер файла к прежнему виду и выгрузить из книги Изображение.
Подскажите, плиз, как это сделать?
Изменено: Эмир Гасанов - 11.11.2013 02:53:07
Иногда только промахнувшись, понимаешь как ты попал.
 
Открываю, закрываю, а размер тот же )
Скрытый текст
 
У меня я не пойму почему, изображение .jpg 70кб при вставке в image (размер на весь экран) - утяжеляет книгу на 1,8 мб. И после выше указанных действий не возвращает размер файла. Он уже 5 мб, что не очень удобно для пересылки по почте.
Может у кого-то есть идеи?
Для информации, когда я не загружаю файл при открытии книги и сохраняю с пустым Image - вес файла 1,8мб, что меня уСтраивает.
Изменено: Эмир Гасанов - 11.11.2013 02:23:28
Иногда только промахнувшись, понимаешь как ты попал.
 
Цитата
что меня утраивает
Про раздвоение личности слышал. Но чтобы растроение?! :)
 
vikttur! Здравствуйте. Очень смешно ))
Хотя от вас, я надеялся получить гораздо более содержательный комментарий!
Может это быть связано как-то с файлом, который загружаю, или нет?
Я уже попробовал его из новой книги подгрузить и тот же результат.
Может проблема еще и в том, что сам файл хранится у меня в модуле книги в виде функции?
Иногда только промахнувшись, понимаешь как ты попал.
 
Не знаю... Но
Код
1
сам файл хранится у меня в модуле книги в виде функции

Это что-то новое.
 
Вот все описано подробно.
http://excelvba.ru/code/FileToVBAFunction
Там и про хранение небольших файлов пишут...
Иногда только промахнувшись, понимаешь как ты попал.
 
Функция, создающая файл, и "сам файл" - понятия разные, не правда ли? Но это я уже цепляюсь.
Может, стоит показать народу пример с кодом?
 
Я бы с радостью, но размеры не проходят стандарт.
Это при условии, что все вырежу, кроме необходимого.
Уже пробовал. Но попытка не пытка - попробую еще...

Вот два файла.
Текстовый файл - надо скопировать и вставить в модуль Excel, а в Excel раскомментировать 2 строчки.
Запустить. Видно, что файл до первого запуска имеет один размер, а после - на размер изображения больше. Почему? Не понимаю...
Книга должна обязательно сохраняться - у меня сохранение происходит автоматически при выходе (BeforeClose).
Файлы удалены. Превышение допустимого размера [МОДЕРАТОР]
Иногда только промахнувшись, понимаешь как ты попал.
 
Попробуйте так
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Set Worksheets(1).Image1.Picture = Nothing
    Worksheets(1).Image1.Visible = False
    Worksheets(1).Image1.Width = 4
    Worksheets(1).Image1.Height = 3
    Me.Save
End Sub
 
Private Sub Workbook_Open()
    Worksheets(1).Image1.Picture = LoadPicture(Environ("tmp") & "\MyFile.jpg")
    Worksheets(1).Image1.Width = 336
    Worksheets(1).Image1.Height = 206
    Worksheets(1).Image1.Visible = True
End Sub

Естественно, размеры при открытии файла были произвольные, так что измените под ваши нужды. Успехов.
 
Андрей, спасибо.
К сожалению не получилось, того что хотел.
Если свой рисунок не загружаю вообще, то файл 2,7мб, если загружаю, то после выхода из приложения - размер становится 4,6мб.
А размер изображения, между тем, 75кб. Только в приложении его размеры W - 1006.5, H - 480.75. Не знаю, что уже делать...Не рационально как-то. А может подскажете, как правильно удалить объект Image при выходе, а при входе его вернуть обратно с нужными параметрами. Может это поможет?
Иногда только промахнувшись, понимаешь как ты попал.
 
Я не очень понимаю, но когда мы запускаем команду LoadPicture, то куда-то подгружается картинка, наверное, как-то ее оттуда и выгрузить можно?
Иногда только промахнувшись, понимаешь как ты попал.
 
Эмир, вы мой вариант попробовали? У меня с изменением размера Image1 при закрытии файл получается маленького размера.
 
Да, я все прописал в своем файле, но без результата.
Иногда только промахнувшись, понимаешь как ты попал.
 
Тогда, увы, не знаю чем помочь, у меня отработало без проблем с изменением размера Image1 (хотя исходная ситуация имела место). Единственная разница, что экспериментировал в своём чистом файле. Может тогда создавать Image на требуемом листе при открытии книги, а потом удалять его при закрытии...
Изменено: anvg - 11.11.2013 05:31:28
 
А как правильно создать(с параметрами) и удалить, не подскажете?
Иногда только промахнувшись, понимаешь как ты попал.
 
Можно так. В код модуля книги
Код
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim pSheet As Worksheet, pOObject As OLEObject
    Set pSheet = ThisWorkbook.Worksheets(1)
    If pSheet.OLEObjects.Count > 0 Then
        For Each pOObject In pSheet.OLEObjects
            If pOObject.Name = "MainPicture" Then pOObject.Delete: Exit For
        Next
    End If
    Me.Save
End Sub
 
Private Sub Workbook_Open()
    Dim pSheet As Worksheet, pPicture As OLEObject
    Set pSheet = ThisWorkbook.Worksheets(1)
    Set pPicture = pSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, _
                   DisplayAsIcon:=False, Left:=119.25, Top:=36, Width:=336, Height:=206)
    pPicture.Object.Picture = LoadPicture(Environ("tmp") & "\MyFile.jpg")
    pPicture.Name = "MainPicture"
End Sub
 
Спасибо, Андрей.
Попробую так.
Иногда только промахнувшись, понимаешь как ты попал.
 
Андрей, код потестировал, работает. Спасибо вам.
Теперь скрывается моя иконка в заголовке приложения. Как-то можно обойти это?
Изменено: Эмир Гасанов - 11.11.2013 13:14:51
Иногда только промахнувшись, понимаешь как ты попал.
 
Эмир, даже не знаю с чем это может быть связано. Код никак не связан со значком заголовка окна. Надо код смотреть. Может имеет смысл настройку окна Excel для отображения значка выполнять после создания Image на листе.
 
Андрей, вижу вас. Скажите, пожалуйста, мог данные код повлиять на вывод иконки в заголовок приложения?
Иногда только промахнувшись, понимаешь как ты попал.
 
Посмотрю сейчас - делал уже или нет.
Иногда только промахнувшись, понимаешь как ты попал.
 
Андрей, уже так делал.
Буду разбираться дальше.
Если не получится, не мог бы я как-то вас попросить посмотреть мой файл, отправив его вам на личную почту? Скинуть e-mail можете мне на e-mail удален [МОДЕРАТОР], если возможно.
Иногда только промахнувшись, понимаешь как ты попал.
 
Иногда только промахнувшись, понимаешь как ты попал
Как точно к вашей ситуации подходит :)
Нарушение правил:
- файлы удалены;
- e-mail из сообщения удален;
- прошу убрать адрес из подписи.
 
Файлы-то за что. Каждый из них был менее 100 кб.
Иногда только промахнувшись, понимаешь как ты попал.
 
Цитата
Приложите файл(ы) с примером (общим весом не более 100 Кб)
Не моя прихоть. Вы не равнее других. Читайте правила.
Уменьшите размер и прикрепите еще раз.
Страницы: 1
Читают тему
Loading...