Страницы: 1
RSS
Удалить обрезанные области рисунков
 
Доброго всем дня!
Как обычно своего мозга не хватает, посему прошу помощи!
У меня есть прайс-лист с картинками (около 3,5 тыс позиций) картинки в прайсе длинные, но с краев много пустого, и хочется его убрать (обрезать).

Максим Зеленский написал для этого макрос (Спасибо ему еще раз) картинки приняли нормальный вид, но эксель не обрезал их а только перестал отображать лишнее и при выгрузке картинки принимают первоначальный вид длиииииииинного  прямоугольника (((.
Как можно удалить обрезанные области без возвратно?
Бог кости не бросает
 
Решения с помощью макроса не знаю. Если не найдете решения с помощью макроса, то вручную это можно попытаться сделать так: выделите один любой рисунок - вкладка "Формат" - группа "Изменение" - Сжать рисунки - снимите флажок "Применить только к этому рисунку" - OK. После этого обрезанные фрагменты должны удалиться.
 
Karataev, этот способ я тоже пробовал, но происходит обрезание части рисунка и растягивание его до прежнего размера, получается размытая клякса.
Бог кости не бросает
 
Сделайте файл пример. На одном листе рисунок обрезанный, но не сжатый, на втором листе этот же рисунок обрезанный и сжатый. Без файла-примера не понятна проблема, т.к. я сейчас обрезал рисунок, сжал его и внешне ничего не изменилось.
 
Karataev, один момент!
Изменено: coregonus - 02.06.2016 10:35:07
Бог кости не бросает
 
У меня тоже проблема с Вашим рисунком, но другая - не происходит удаление обрезков. Я пробую в Excel 2016.
Если после обрезки рисунок скопировать и вставить с помощью специальной вставки, то обрезки удаляются. Попробуйте этот макрос.
Код
Sub jjj()

    Dim shp As Shape, lngLeft As Long, lngTop As Long
    Dim i As Long
    
    Application.ScreenUpdating = False
    
    For i = ActiveSheet.Shapes.Count To 1 Step -1
        Set shp = ActiveSheet.Shapes(i)
        lngLeft = shp.Left: lngTop = shp.Top
        shp.Cut
        ActiveSheet.PasteSpecial Format:="Рисунок"
        Set shp = ActiveSheet.Shapes(ActiveSheet.Shapes.Count)
        shp.Left = lngLeft: shp.Top = lngTop
    Next
    
    Application.ScreenUpdating = True
    
End Sub
Изменено: Karataev - 02.06.2016 11:18:53
 
Karataev, пробую
Бог кости не бросает
 
Я только что внес изменения в макрос, возьмите новый код из поста 6.
 
Karataev, работает  :)
 а объединить  с этим можно ?  Или лучше по отдельности запускать ?
Код
Sub cut_em_all()
 
    For Each shsh In ActiveSheet.Shapes
    With shsh
        .LockAspectRatio = msoFalse
        .IncrementLeft 0.00007874015748
        .ScaleWidth 0.5896716444, msoFalse, msoScaleFromTopLeft
        .PictureFormat.Crop.PictureWidth = 1050
        .PictureFormat.Crop.PictureHeight = 201
        .PictureFormat.Crop.PictureOffsetX = 215
        .PictureFormat.Crop.PictureOffsetY = 0
        .IncrementLeft 441.4724409449
        .ScaleWidth 0.2874850932, msoFalse, msoScaleFromTopLeft
        .PictureFormat.Crop.PictureWidth = 1050
        .PictureFormat.Crop.PictureHeight = 201
        .PictureFormat.Crop.PictureOffsetX = 0
        .PictureFormat.Crop.PictureOffsetY = 0
    End With
    Next
End Sub
Изменено: coregonus - 03.06.2016 11:27:49
Бог кости не бросает
 
смотрите файл
 
Karataev, Огромное спасибо!!!!
Бог кости не бросает
 
coregonus, код следует оформлять соответствующим тегом: ищите такую кнопку. Тогда и строки пронумеруются сами. Посмотрите #6 - лучше читается, чем у Вас?
 
Юрий М, Виноват, исправлюсь!
Бог кости не бросает
 
Не вижу исправленного сообщения. Когда исправитесь? )
 
Исправляюсь
Только сейчас обратил внимание на наши аватарки )))).
Бог кости не бросает
 
Во-во! Это ждёт каждого, кто не будет оформлять код )
 
Буду стараться более не косячить.
Бог кости не бросает
Страницы: 1
Читают тему
Наверх