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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2012, 17:26   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Вставка объект рисунок после обработки в WIA на лист

Обработал рисунок в WIA как его теперь вставить не сохранить в файл, а вставить на лист?
Код:
    Dim objImageFile As Object
    Dim objImageProcess As Object
    Set objImageFile = CreateObject("WIA.ImageFile")
    Set objImageProcess = CreateObject("WIA.ImageProcess")
    ' Загружаем файл в компонент:
    objImageFile.LoadFile ПутьКФайлуСКартинками
    ' Обрабатываем…
    With objImageProcess
        ' Обрезаем:
        .Filters.Add .FilterInfos("Crop").FilterID
        With .Filters(1).Properties
            ' Подрежем сверху-снизу
            .Item("Top") = objImageFile.Width \ 10
            .Item("Bottom") = objImageFile.Width \ 10
            ' Подрежем справа-слева
            .Item("Left") = objImageFile.Height \ 10
            .Item("Right") = objImageFile.Height \ 10
        End With
        ' Применяем заданные выше фильтры
        Set objImageFile = .Apply(objImageFile)
    End With
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 29.02.2012, 19:39   #2
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Такое вообще возможно или нужно сохранять файл на диск в обязательном порядке?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 29.02.2012, 19:48   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

через буфер обмена (через карман) должно получиться.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 29.02.2012, 20:49   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
через буфер обмена (через карман) должно получиться.
Пошел по пути сохранения временного файла. Очень не хочется. Но так как мне нужно будет прогонять через процедуру в пике не более 50 файлов, решение терпимое.

А если зайти с другой стороны...
Во общем задача такая: нужно выводить на печать сканы документов. При этом в нижнем правом углу необходимо размещать надпись вида: "Копия верна. ФИО", там же поместить скан печати и подписи человека.

Хотел делать через срытый лист на котором размещаю надпись, подпись и печать и после только меняю по порядку сканы и печатаю. Это же решит проблему если размер скана меньше размера листа а4.

Как я понимаю подобное можно сделать средствами WIA:
1. Загружаем рисунок.
2. Приводим к книжному расположению.
3. Проверяем его размер, если меньше а4 - добавляем белый лист, если больше - отрезаем лишнее (лучше сохранять истинные размера, потеря до 1 см с каждой стороны терпима), если сильно больше (на пример а3) - масштабируем до а4.
4. Размещаем надпись, печать, подпись.
5. Печатаем на нужный принтер.

Можно ли этапы 3-5 провести только силами WIA? В частности я не знаю как увеличить размер полотна рисунка не масштабирую сам рисунок, как нанести надпись и как вывести на принтер.
С уважением, Алексей.

Последний раз редактировалось tae1980; 29.02.2012 в 20:53.
tae1980 вне форума Ответить с цитированием
Старый 29.02.2012, 22:51   #5
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Эксперименты и интернет поставили перед фактом что из WIA распечатать нельзя. Есть два вопроса:
1. Как можно нанести текст прямо на картинку?
2. WIA позволяет объединить две картинки. Можно ли объединить с прозрачностью. Скажем сделать чистый белый цвет прозрачным?

Идея с размещением рисунка на лист терпит поражение. Размер а4 210х297, устанавливаю все поля равные 0, обрезаю картинку до 20 см.
И все равно ексель выдает такое как на рисунке (пунктир - зона печати). То есть по горизонтали не лезем на лист???? Как такое может быть ума не приложу, но ни чего не помогает. ( Может кто знает что за фигня и как быть?
Изображения
Тип файла: jpg Untitled-1.jpg (24.7 Кб, 52 просмотров)
С уважением, Алексей.

Последний раз редактировалось tae1980; 01.03.2012 в 00:26.
tae1980 вне форума Ответить с цитированием
Старый 01.03.2012, 00:02   #6
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Если размер скана под А4 вставьте в колонтитул и поиграйте там полями. Ну а если надо вставлять подпись и печать, вставляйте по координатам на лист, только изображения берите PNG (будет прозрачность).
strannick вне форума Ответить с цитированием
Старый 01.03.2012, 00:25   #7
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от strannick Посмотреть сообщение
Если размер скана под А4 вставьте в колонтитул и поиграйте там полями.
А есть разница? Не лезем же по ширине, а колонтитул влияют на высоту.
Парадокс, какой-то.
Цитата:
Сообщение от strannick Посмотреть сообщение
Ну а если надо вставлять подпись и печать, вставляйте по координатам на лист, только изображения берите PNG (будет прозрачность).
Есть пример кода как вставить надпись (рисунок) по координатам? Я использую этот, но возможно он не самый лучший
Код:
        With Тек_Таблица.Shapes.AddTextEffect(msoTextEffect2, УчастокИмя, "Arial", 5#, msoFalse, msoFalse, word(DXDY, 2), word(DXDY, 1))
            .Adjustments.Item(1) = 0#: .ScaleHeight 0.35, msoFalse, msoScaleFromTopLeft
            .ScaleWidth 1.5, msoFalse, msoScaleFromTopLeft
            .Line.ForeColor.RGB = vbBlack
            .TextEffect.Tracking = 1.5
        End With
С уважением, Алексей.

Последний раз редактировалось tae1980; 01.03.2012 в 00:28.
tae1980 вне форума Ответить с цитированием
Старый 01.03.2012, 00:50   #8
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Вот кусок кода:

Sub InsertPicksandSavePDF()
znach = Range("J9").Value
ActiveSheet.Pictures.Insert("D:\Баз а\Образцы печатей\" & znach & ".PNG").Select ' выбираем файл изображения для вставки
Selection.ShapeRange.IncrementLeft (622.25) ' координата Left
Selection.ShapeRange.IncrementTop (550.75) ' координата Top

У меня изображения были привязаны к номерам. Если одно, можно сразу прописать путь без znach.
Дальше идет сохранение в PDF где можно включить печать на принтер.

Так а с шириной что за проблема я так и не понял. Не масштабируется рисунок?
strannick вне форума Ответить с цитированием
Старый 01.03.2012, 10:03   #9
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от strannick Посмотреть сообщение
Дальше идет сохранение в PDF где можно включить печать на принтер.
Это для excel2003 или для excel2007? Если для excel2003 интересно как ты сохраняешь в pdf.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 01.03.2012, 10:12   #10
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Для 2007. А там с PDF нет проблем.
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОИСК И ВСТАВКА НА ДРУГОЙ ЛИСТ danika24 Microsoft Office Excel 16 23.04.2012 12:20
Вставка PDF на лист как рисунок tae1980 Microsoft Office Excel 2 28.02.2012 22:41
Вставка ImageMso как рисунок, на лист. WizarD.89 Microsoft Office Excel 0 28.04.2011 15:45
Рисунок не помещается в 1 лист stenl1 Microsoft Office Word 1 14.09.2010 04:51
Вставка диапазона с листа Excell в текст письма как рисунок sasha_prof Microsoft Office Excel 11 15.02.2010 22:13