Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.11.2008, 18:11   #1
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию Excel to jpg

1. Делаю скрин диапазона
2. Вставляю картинку в лист
3. Через контекстное меню сохраняю как *.jpg

Код:
Sub inFail()
Dim str As String, strFiNa As String, strShNa As String, MyH As Long, MyW As Long
Dim SStime As Long
    str = ActiveSheet.Name
    If TypeName(Selection) = "Picture" Then
        strFiNa = Application.GetSaveAsFilename(InitialFileName:="Table", FileFilter:="GIF file,*.gif,JPG file,*.jpg")
        If strFiNa = "False" Then Exit Sub
        MyH = Selection.Height
        MyW = Selection.Width
        Selection.Copy
        Charts.Add
        ActiveChart.Location Where:=xlLocationAsObject, Name:=str
        strShNa = ActiveChart.Name
        strShNa = Trim(Replace(strShNa, str, vbNullString))
        ActiveSheet.Shapes(strShNa).Height = MyH * 1.01
        ActiveSheet.Shapes(strShNa).Width = MyW * 1.01
        DoEvents
        ActiveChart.Paste
        ActiveChart.Export Filename:=strFiNa, FilterName:=Right(strFiNa, 3)
        ActiveSheet.Shapes(strShNa).Delete
    End If
End Sub
Не устраивает качество получаемого файла. Нельзя как то программно связать Excel mspaint.exe?

Последний раз редактировалось Acro; 03.11.2008 в 18:13.
Acro вне форума
Старый 03.11.2008, 18:17   #2
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Acro Посмотреть сообщение
1. Делаю скрин диапазона
Не устраивает качество получаемого файла.
Добавь расширение .rar:
Будет выглядеть так:
имя.jpg.rar

При просмотре удаляется .rar и смотрится с отличным качеством.
valerij вне форума
Старый 03.11.2008, 18:56   #3
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию

Как то не выходит. Разницы не вижу
Acro вне форума
Старый 03.11.2008, 20:40   #4
valerij
Старожил
 
Аватар для valerij
 
Регистрация: 12.05.2007
Сообщений: 2,339
По умолчанию

Цитата:
Сообщение от Acro Посмотреть сообщение
Как то не выходит. Разницы не вижу
Наверное я тебя не понял, я подумал, что на форум прикрепить не можешь

Последний раз редактировалось valerij; 03.11.2008 в 20:48.
valerij вне форума
Старый 03.11.2008, 21:08   #5
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Используйте для копирования диапазона такой код:

Range("B18:C39").CopyPicture Appearance:=xlScreen, Format:=xlPicture

Вместо B18:C39 укажите нужный диапазон ячеек

Этот код помещает "скрин" диапазона ячеек в буфер обмена.
Потом вставляйте рисунок в любой графический редактор (тот же Paint)
Качество вроде приличное.

Здесь есть информация по теме.

Последний раз редактировалось EducatedFool; 03.11.2008 в 21:28.
EducatedFool вне форума
Старый 04.11.2008, 12:40   #6
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Используйте для копирования диапазона такой код:

Range("B18:C39").CopyPicture Appearance:=xlScreen, Format:=xlPicture

Вместо B18:C39 укажите нужный диапазон ячеек

Этот код помещает "скрин" диапазона ячеек в буфер обмена.
Потом вставляйте рисунок в любой графический редактор (тот же Paint)
Качество вроде приличное.

Здесь есть информация по теме.
Копирование нужного диапазона в скрипте я уже реализовал, почитав msdn:
Код:
Sub RangeToScreen()
Worksheets("1").Range("A1:AK39").CopyPicture xlScreen, xlBitmap
Worksheets("img").Paste _
    Destination:=Worksheets("img").Range("D2")
End Sub
Указанный в первом посте код - часть найденного решения по экспорту картинок из книги скриптом(полная версия во вложении). Вот их качество, по сравнению с предложенной вами простой вставкой в Паинт из буфера, и не устраивало. Вот дополнительно управлять качеством не получается в скрипте.

За ссылку спасибо, по задачам схожее, но принципиально отличное решение.
Acro вне форума
Старый 04.11.2008, 13:01   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Попробуйте в строке
Worksheets("1").Range("A1:AK39").Co pyPicture xlScreen, xlBitmap

заменить xlBitmap на xlPicture
В таком случае картинка копируется в буфер обмена в векторном формате
EducatedFool вне форума
Старый 06.11.2008, 01:29   #8
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

Цитата:
заменить xlBitmap на xlPicture
В таком случае картинка копируется в буфер обмена в векторном формате
Работает и так и так но разницы не прочувствовал.
(Изображение в Ирфан выгружал - совпадает до пикселя)
КаМММ вне форума
Старый 06.11.2008, 17:23   #9
Acro
Пользователь
 
Регистрация: 21.10.2008
Сообщений: 39
По умолчанию

Соверешенно верно разницы нет. На форумах msdn нашел код экспорта идельного качества jpeg. 1.9 Mb на выходе 1:1 через ОЛЕ. Как, уже, уменьшить программно получаемое качество не разобрался. Остановился на модификации вышеуказанного варианта.
Но там есть баг, повторяемость не отловил - иногда размер xls начинает расти после экспорта, хотя внешне в файле ничего не появилось нового. Остатки буфера что ли...
Acro вне форума
Старый 06.11.2008, 22:11   #10
КаМММ
Почти "Чайник"
Форумчанин
 
Аватар для КаМММ
 
Регистрация: 09.06.2008
Сообщений: 134
По умолчанию

А у экселя я тоже заметил такой глюк.
Цитата:
иногда размер xls начинает расти после экспорта, хотя внешне в файле ничего не появилось нового. Остатки буфера что ли...
У меня есть файл с макросами и формами (используется в качестве программы для расчёта стоимости воздуховодов, начисления зарплаты жестянщикам, списания металла, короче наворочено жуть сколько)
Если файл открыть отключив макросы и закрыть, то он спрашивает "сохранять ли изменения?" даже если изменений не делать.
После такого "сохранения" файл "худеет" с 1,3 Мб до 1 Мб
Иногда больше иногда меньше но процентов на двадцать.
если открыть с макросами и снова закрыть с сохранением то опять толстеет.
Причём иногда бывает что "Толстый файл" при запуске "Глючит"
"Худой" не глючит никогда.
Ps Офис 2003
КаМММ вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Jpg по HTTP mikkis Работа с сетью в Delphi 15 17.06.2009 03:27
Технология JPG NoName_emaNoN Мультимедиа в Delphi 36 12.01.2009 20:09
Сводка jpg-файла eks-s Мультимедиа в Delphi 3 30.08.2008 17:33
JPG to AVI Pedro Мультимедиа в Delphi 2 08.05.2008 16:58
Jpg To Avi prizrak1390 Мультимедиа в Delphi 4 23.01.2008 21:16