Страницы: 1
RSS
Камера Excel для отслеживания изменений
 
Доброго дня всем и хорошей погоды! :)

Возникла необходимость создать макрос для использования Камеры Excel - с возможностью выбора диапазона и места вставки.
В интернете нашёл код VBA под это дело..., но при обработке вставляет только изображение - без последующего изменения данных, плюс ругается на последнюю строку в коде: Selection.Formula = UserRange.Address

Сам код:
Код
Sub Camera()
    Dim MyPrompt As String
    Dim MyTitle As String
    Dim UserRange As Range
    Dim OutputRange As Range

    Application.ScreenUpdating = True

    'Prompt user for range to capture
    MyPrompt = "Выберите диапазон для отслеживания!"
    MyTitle = "Выделение диапазона"
    On Error Resume Next
    Set UserRange = Application.InputBox(Prompt:=MyPrompt, _
        title:=MyTitle, Default:=ActiveCell.Address, Type:=8)
    If UserRange Is Nothing Then End
    On Error GoTo 0

    'Copy range to Clipboard as picture
    UserRange.CopyPicture

    'Prompt user for range to paste to
    MyPrompt = "Укажите ячейку для вставки!"
    MyTitle = "Выбор места для камеры"
    On Error Resume Next
    Set OutputRange = Application.InputBox(Prompt:=MyPrompt, _
        title:=MyTitle, Default:=ActiveCell.Address, Type:=8)
    If OutputRange Is Nothing Then End
    On Error GoTo 0

    'Paste picture to output range
    OutputRange.PasteSpecial
    Selection.Formula = UserRange.Address
    
End Sub
Пробовал последние строки заменять на:
ActiveSheet.Pictures.Paste Link:=True
Но что-то не работает...

Прошу Вашей помощи :)
Благодарю!
 
если вставлять картинку на том же листе - то и приведенный код у меня отрабатывает без проблем.
для вставки на другой лист - последний кусочек надо переписать так:
Код
    'Paste picture to output range
    OutputRange.Parent.Activate
    OutputRange.PasteSpecial
    Selection.Formula = "=" & UserRange.Address(, , , 1)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Благодарю ikki за подсказку!
Попробуем.... :)
 
Попробовал у себя...
Выводит ошибку в строке: Selection.Formula = "=" & UserRange.Address(, , , 1)
При этом рисунок вставляет, но не динамичный (без последующих изменений).

У меня офис ХР SP3, Excel 2007 - может уже старые для кода? :)
 
у меня 2010-й, но навскидку ничего специфичного именно для 2010-й версии я в коде не вижу.
думаю, даже в 2003-м это должно работать.

давайте делитесь наконец (вообще-то, это в первом сообщении должно быть):
какую именно ошибку выдает?
в каком окружении это все у вас работает - нет ли каких-нибудь нестандартных надстроек?
нет ли на целевом листе каких-либо обработчиков событий?
ваш файл-пример с макросом;
последовательность действий на примере этого файла - что именно вводите в диалоговые окошки.

пс. есть подозрение, что у вас после вставки картинки с неё "слетает" фокус, а вот почему - мне пока непонятно.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Прикрепляю файлик с пошаговым описанием...
В ошибке пишет, что нельзя установить свойство "Формула" класса "Picture".
Благодарю за помощь!
 
к сожалению, не могу воспроизвести у себя такую же ошибку.
всё отрабатывает без проблем.

возможно, всё-таки глюк семерки :(
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Я тоже к такому выводу в итоге склоняюсь...
Спасибо! :)
Страницы: 1
Наверх