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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2012, 07:00   #1
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию Зациклить процесс вставки изображений на лист

Добрый день, уважаемые форумчане!
Макрос вставляет поочередно изображения на лист по определенным координатам. Вот кусок кода:

znach1 = Range("D1").Value
znach2 = Range("D2").Value
znach3 = Range("D3").Value

Sheets("Изображения").Select
ActiveSheet.Pictures.Insert("D:\Выв од на печать\Изображения\" & znach1 & ".JPG").Select
Selection.ShapeRange.IncrementLeft (-42.25)
Selection.ShapeRange.IncrementTop (-50.75)
ActiveSheet.Pictures.Insert("D:\Выв од на печать\Изображения\" & znach2 & ".JPG").Select
Selection.ShapeRange.IncrementLeft (-14.25)
Selection.ShapeRange.IncrementTop (-50.75)
ActiveSheet.Pictures.Insert("D:\Выв од на печать\Изображения\" & znach3 & ".JPG").Select
Selection.ShapeRange.IncrementLeft (13.25)
Selection.ShapeRange.IncrementTop (-50.75)

Пример приведен для вставки первых трех изображений, но никогда не меньше 10. Это первая очередь изображений. Имена рисунков берутся из ячеек столбца D начиная с первой и до конца. Количество их заранее не известно, но всегда кратно 10 (т.е. 10, 20, 30 и т.д.).
Вторая очередь вставляемых изображений должна вставляться по именам, которые берутся из ячеек столбца E также начиная с первой и до конца.
Ну и третья очередь - это одно и то же изображение, но вставляемое такое количество раз, сколько и предыдущие.
Очередность необходимо соблюсти, так как изображения накладываются одно на другое.
Вот теперь вопрос: В связи с тем, что заранее не известно сколько будет подставляться изображений, но зная, что их на листе всегда 10, как организовать цикл этого процесса? Грубо говоря, подставили 10 изображений первой очереди по именам из ячеек из столбца D, подставили 10 изображений второй очереди по именам из ячеек столбца E, поставили 10 изображений третьей очереди с постоянным именем, сохранили лист с изображениями в формат PDF и перешли к следующим вставкам и сохранениям. Так как, заранее известно, что количество изображений кратно 10, то цикл должен повторяться для каждых 10 имен ячеек. Почему именно для каждого десятка? Потому что существует жесткое требование по координатам вставки изображений и они расчитаны для одного листа. Фуух, может путано немного, видно ночь бессонная сказывается.
Заранее спасибо. Буду рад любому совету.
strannick вне форума Ответить с цитированием
Старый 03.05.2012, 21:45   #2
strannick
Форумчанин
 
Регистрация: 21.10.2011
Сообщений: 433
По умолчанию

Вот нашел такой код подстановки изображений по именам ячеек на листе:


Option Explicit

Sub SignSheet(ws As Worksheet)
'Находит ячейки, содержащие "Подпись:", берет фамилию из 5-й ячейки вправо,
'ищет фамилию на листе "Подписи" и подставляет сотв. картинку

Dim c, s As Shape, p As Range, pa$
With ws
Set p = .Cells.Find("Подпись:", , xlValues, xlWhole)
If p Is Nothing Then Exit Sub
pa = p.Address
Do
Set c = Sheets("Подписи").Range("B:B").Find (p.Offset(0, 5), , xlValues, xlWhole)
If Not c Is Nothing Then
c = c.Offset(0, -1).Address
For Each s In Sheets("Подписи").Shapes
If s.TopLeftCell.Address = c Then
s.Copy
p.Offset(-1, 2).Select
.Paste
Exit For
End If
Next
End If
Set p = .Cells.Find("Подпись:", p, xlValues, xlWhole) 'нельзя исп. FindNext
Loop Until p.Address = pa
End With
End Sub

Sub test()
SignSheet ActiveSheet
End Sub

Только вот не могу въехать как его применить под мою задачу? Половина дела тут сделана - определены ячейки с именами картинок ну и картинки по ним. А вот как теперь осуществить вставку по моим координатам? В принципе, можно не делать цикл сохранения листа по вставки каждых 10 изображений, а сначала вставить все и сколько получится листов - сохранить одним файлом. Дайте совет.



=============== примечание модератора ====================

Если вам надоест «изобретать велосипед», и вам понадобится универсальный готовый код для вставки картинок,
то у меня на сайте есть готовая программа для вставки изображений на лист Excel:
http://excelvba.ru/programmes/PastePictures


Цитата:
Надстройка позволяет искать в выбранной папке изображения, основываясь на содержимом ячеек таблицы Excel, и производить вставку найденных изображений в соседние ячейки (или в примечания к этим ячейкам).

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





Особенности надстройки вставки изображений:
  • загрузка изображений по ссылкам (обычная гиперссылка, просто текст ссылки - URL, формула =ГИПЕРССЫЛКА(), и т.п.)
  • поиск картинок в подпапках заданной папки (глубина поиска по подпапкам не ограничена)
  • установка выбранного пользователем размера для вставляемых изображений
  • отображение состояния поиска и вставки изображений (прогресс-бар)
  • вывод результатов обработки таблицы (сколько изображений вставлено, сколько не найдено)
  • добавление гиперссылок к вставляемым изображениям (по щелчку на картинке открывается исходный файл)
  • 2 режима поиска файлов - по точному совпадению имени файла, и по началу имени файла-изображения
  • 2 режима вставки картинок - подгонка размеров под ячейку, или соблюдение пропорций исходного изображения
  • вывод количества файлов в выбранной папке
  • возможность выбора столбца с названиями файлов, и указания номера столбца для вставляемых изображений
  • возможность вставки изображений в комментарии к ячейкам




Запуск вставки изображений выполняется из меню программы (на панели инструментов)

Надстройка вставки картинок в Excel теперь поддерживает обновления - поэтому отныне надстройка будет регулярно получать новые полезные функции.

Новый функционал будет добавляться в надстройку по мере поступления ваших пожеланий.

Последний раз редактировалось EducatedFool; 06.10.2012 в 14:20.
strannick вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование строк таблицы по условию одной ячейки из Лист 1 в Лист 2 Людвиг Microsoft Office Excel 5 25.10.2014 11:46
Проверка данных из Веба на соответствие заданному условию без вставки их на лист Snekich Microsoft Office Excel 6 23.11.2011 20:18
копирование изображений из закрытого файла в активный лист Jargunkin Microsoft Office Excel 1 01.03.2011 00:00