powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Функция в Excel: добавление картинки
15 сообщений из 15, страница 1 из 1
Функция в Excel: добавление картинки
    #34176461
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу сразу меня извинить, в поиске ничего не нашел.

Нужна функция, которая берет путь из ячейки, в вставляет картинку из этого пути на определенное место в документе.
Вот все с функциями перепробовал (чайник я), но никак не могу заставить ее вообще вставлять картинку. Помогите =(
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176527
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или хотя бы подскажите, это вообще сделать можно?
Функция может вернуть картинку?
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176573
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно сделать кнопку и повесить на неё свой макрос. а макрос можно записать макрорекордером. Там где будет указан путь картинки в коде, заменить его на Cells(r,c).value, т.е. на значение ячейки, в которой находится путь. Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub CommandButton1_Click()
Dim PPath As String
    PPath = Cells( 1 ,  1 ).Value
    With ActiveSheet.Pictures.Insert(PPath)
        .ShapeRange.IncrementLeft - 199 . 5 
        .ShapeRange.IncrementTop - 3 
    End With
End Sub

строки с .ShapeRange - для изменения положения
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176579
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про кнопку я думал, но хочется чтобы все делалось автоматически.
А у клиентов и так в системе куча кнопок, ругаются.

А можно хоть в этой функции вызвать процедуру, которая вставляет картинку?
у меня щас вот так:

автор Public Function Add()
Range("B5").Select
ActiveSheet.Pictures.Insert("C:\My Documents\My Pictures\logo_sas.gif").Select
End Function

не работает.
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176652
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BayroNА можно хоть в этой функции вызвать процедуру, которая вставляет картинку?
не будет работать.

можно попробовать следующий алгоритм: сделать обработчик события изменения листа, проверять изменилось ли содержание ячейки с адресом картинки. если изменилось - вставить новую.
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176703
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда попрошу подсказать как отследить изменение =)
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176719
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
этот код нужно добавить в код листа, не модуля:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Const AddressRange = "A1"
Static OldValue As String
Dim PPath As String
Static PictureName As String

    If Target.Address <> Range(AddressRange).Address Then
        Exit Sub
    End If
    
    On Error GoTo errhandler_emptypath:

    If Range(AddressRange).Value = "" Then
        ActiveSheet.Shapes(PictureName).Delete
        OldValue = ""
        Exit Sub
    End If
    
    On Error GoTo errhandler_wrangpath:
    
    If Range(AddressRange).Value <> OldValue Then
        PPath = Range(AddressRange).Value
        With ActiveSheet.Pictures.Insert(PPath)
            .ShapeRange.IncrementLeft - 199 . 5 
            .ShapeRange.IncrementTop - 3 
            PictureName = .Name
        End With
        OldValue = PPath
    End If
    
    Exit Sub

errhandler_wrangpath:
    MsgBox "Неверный адрес картинки"
    Exit Sub

errhandler_emptypath:
    Exit Sub

End Sub
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176822
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Огромное спасибо. Так все работает. Но оказалось, что все не так просто.
У меня шаблон заполняется автоматически, и залезть в AutoOpen который это делает я не могу.
Получается, что изменения как бы и нет, если руками ничего не вводишь.
Можно это как-то обойти?
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34176881
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BayroN... залезть в AutoOpen который это делает я не могу... Это удивительно! можно добавить одну строчку в конце для вызова своей функции и все. Подумайте об этом.

BayroNПолучается, что изменения как бы и нет, если руками ничего не вводишь.
Можно это как-то обойти?

Можно использовать еще эти события книги для запуска своего макроса при открытии файла. Они будут выполняться после Workbook_Open:
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Workbook_Activate()
    MsgBox "Workbook_Activate"
End Sub

Private Sub Workbook_WindowActivate(ByVal Wn As Window)
    MsgBox "Workbook_WindowActivate"
End Sub
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34177037
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за уделенное время.
Но у меня все равно ничего не работает =)

Схема получается такая:
- Есть шаблон Excel.
- Из программы выгружаются данные, и открывается AutoOpen.xls, он подхватывает шаблон и заполняет его данными.
- В одном из столбцов будет путь, по этому пути мне надо вставить туда картинку =(
- AutoOрen я не могу поменять, потому как он для всех компаний один, а это надо сделать только для одного клиент, не хочется его переписывать.

Можно ли сделать что-нибудь в такой ситуации?
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34177358
vbapro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можешь прислать мне шаблон и заполненный файл?
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34177599
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отправил.
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34178626
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BayroNСхема получается такая:
- Есть шаблон Excel.
- Из программы выгружаются данные, и открывается AutoOpen.xls, он подхватывает шаблон и заполняет его данными.
- В одном из столбцов будет путь, по этому пути мне надо вставить туда картинку =(
- AutoOрen я не могу поменять, потому как он для всех компаний один, а это надо сделать только для одного клиент, не хочется его переписывать.

Можно ли сделать что-нибудь в такой ситуации?
Добавь в нужные шаблоны модуль с именем Reformat и в нем макрос:
Код: plaintext
1.
2.
Public Sub AfterGenerate()
    ... здесь твой код с картинками и разной другой фигней
end sub
А в AutoOpen (который универсален для всех) в самом конце макроса сделай вызов:
Код: plaintext
1.
2.
on error resume next
Application.Run("MyNewDocument.xls!Reformat.AfterGenerate")
on error goto  0 
То есть оно попытается найти в документе созданном из шаблона этот макрос и если найдет - запустит. Не найдет - молча пропустит.
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34185185
BayroN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за помощь.
Пришлось все же делать кнопкой.
Не дали исправить то что уже есть =(
...
Рейтинг: 0 / 0
Функция в Excel: добавление картинки
    #34952763
ShurikEv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот почему в 2007 офисе нет ShapeRange.IncrementLeft? Выяснилось простой записью макроса, когда картинка перемещается. Как тут быть?
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Функция в Excel: добавление картинки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]