Vba excel вставить картинку в ячейку
Я добавляю файлы ".jpg" в свой лист Excel с помощью следующего кода:
Я не знаю, что делаю неправильно, но он не вставляется в нужную ячейку, так что мне делать, чтобы поместить это изображение в указанную ячейку в Excel?
Лучше ничего не выделять в Excel, обычно в этом нет необходимости и это замедляет ваш код.
Во-первых, я рекомендую, чтобы изображения находились в той же папке, что и книга. Вам необходимо ввести некоторые коды в процедуру Worksheet_Change рабочего листа. Например, мы можем ввести следующие коды, чтобы добавить изображение с тем же именем, что и значение ячейки в столбце A, в ячейку в столбце D:
С помощью приведенных выше кодов размер изображения изменяется в соответствии с ячейкой, в которую оно добавлено.
Подробная информация и образец файла здесь: Vba Вставить изображение в ячейку
Я тестировал как решение @SWa, так и @Teamothy. Я не нашел метода Pictures.Insert в документации Microsoft и опасался некоторых проблем с совместимостью. Так что я полагаю, что старый метод Shapes.AddPicture должен работать во всех версиях. Но это медленно!
Я работал над системой, работающей на ПК и Mac, и пытался найти код, который работал бы для вставки изображений как на ПК, так и на Mac. Это сработало для меня, поэтому, надеюсь, кто-то еще сможет им воспользоваться!
Примечание. Для переменных strPictureFilePath и strPictureFileName необходимо указать допустимые пути для ПК и Mac. Например,
Для ПК: strPictureFilePath = "E: \ Dropbox \" и strPictureFileName = "TestImage.jpg", а для Mac: strPictureFilePath = "Macintosh HD: Dropbox:" и strPictureFileName = "TestImage.jpg"
Код, как следует:
Если речь идет просто о вставке и изменении размера изображения, попробуйте приведенный ниже код.
Для конкретного вопроса, который вы задали, свойство TopLeftCell возвращает объект диапазона, связанный с ячейкой, в которой припаркован верхний левый угол. Чтобы разместить новое изображение в определенном месте, я рекомендую создать изображение в «правом» месте и зарегистрировать его верхнее и левое значения свойств фиктивного элемента в переменных типа double.
Вставьте свой Pic, назначенный переменной, чтобы легко изменить ее имя. Объект формы будет иметь то же имя, что и объект изображения.
Глядя на опубликованные ответы, я думаю, что этот код также будет для кого-то альтернативой. Никто выше не использовал .Shapes.AddPicture в своем коде, только .Pictures.Insert()
Я работаю в Excel 2013. Также понял, что Вам нужно заполнить все параметры в .AddPicture из-за ошибки «Аргумент не является необязательным». Глядя на это, вы можете спросить, почему я установил Height и Width как -1, но это не имеет значения, потому что эти параметры установлены ниже между скобками With .
Одним из революционных нововведений в крайней версии Microsoft Excel 2010 стали инфокривые sparklines - миниграфики, помещающиеся внутри ячеек и наглядно отображающие динамику числовых данных:
Чтобы создать подобные миниграфики, нужно выделить ячейки, куда мы хотим их поместить и воспользоваться кнопками группы Спарклайны (Sparklines) с вкладки Вставка (Insert) :
В открывшемся диалоговом окне нужно задать диапазон исходных данных и диапазон вывода:
Созданные миниграфики можно всячески форматировать и настраивать с помощью динамической вкладки Конструктор (Design) :
В частности, можно легко поменять цвет линий и столбцов спарклайна и выделить особыми цветами минимальные и максимальные значения:
Поскольку спарклайн не является отдельным графическим объектом, а выступает, по сути, в роли фона ячейки, то он нисколько не помешает ввести в ячейку текст, числа или другую информацию. Это открывает простор для фантазии - если немного пошаманить с выравниванием введенного текста, шириной и высотой ячейки, то можно достичь интересных результатов:
Что делать, если у вас пока старая версия Excel? Или нужен тип графика, которого нет в наборе спарклайнов? Переходим к следующим способам!
Способ 2. Дополнительные надстройки для микрографиков
На самом деле, идея подобных графиков витала в воздухе уже достаточно давно. Еще для 2003 версии Excel существовало несколько надстроек с подобным функционалом, самым известными из которых были замечательная бесплатная Sparklines Эдварда Тафта и и платные BonaVista microcharts (169$) и Bissantz SparkMaker (200$). Да и я в свое время тоже пытался сделать что-то подобное в надстройке PLEX.
Если брать в качестве примера бесплатную надстройку Sparklines, то после ее подключения мы получим новую вкладку (или панель инструментов) примерно такого вида:
Как легко заметить, эта надстройка умеет строить заметно больше трех типов диаграмм :)
Единственный минус - надстройку нужно будет установить на всех компьютерах, где вы планируете работать с файлом, содержащим такие диаграммы.
Способ 3. Повтор символов N-раз
"Бюджетным вариантом" одномерных микрографиков являются повторяющиеся однотипные символы, имитирующие линейчатую диаграмму. Для этого можно воспользоваться текстовой функцией ПОВТОР (REPT) , которая умеет выводить в ячейку любой заданный символ нужное количество раз. Для вывода нестандартных символов (зная их код) можно использовать функцию СИМВОЛ (CHAR) . В общем и целом это выглядит так:
Символ с кодом 103 - черный прямоугольник шрифта Webdings, поэтому не забудьте установить этот шрифт для ячеек C2:C12. Также можно поиграться с символами других шрифтов, например в столбце Е использован символ с кодом 110 из шрифта Wingdings.
Способ 4. Макросы
Способ представляет собой улучшенный предыдущий вариант, где набор повторяющихся символов (используется знак "|") создает не формула, а простая пользовательская функция на VBA. Причем для каждой ячейки создается отдельный столбец, т.к. функция использует символ переноса строки после каждого числа - выглядит это примерно так:
Чтобы использовать этот трюк у себя в файле, открываем редактор VBA (Alt+F11), добавляем новый модуль в книгу (меню Insert - Module) и копируем туда код функции NanoChart:
Затем вставляем функцию NanoChart в нужные ячейки, указывая в качестве аргументов числовые данные, как на рисунке выше. Для получившихся ячеек с микрографиками необходимо включить перенос по словам и поворот на 90 градусов через меню Формат - Ячейки - Выравнивание (Format - Cells - Alignment) . Константа MaxSymbols задает длину максимально высокого столбца в минигистограмме.
Теперь в мастере функций в категории Определенные пользователем появилась новая функция LineChart c двумя аргументами - диапазоном и кодом цвета графика. Если ее вставить в пустую ячейку, например, справа от числовой строки и скопировать затем, как обычно, на весь столбец, то получим весьма симпатичное отображение числовых данных в виде миниграфиков:
При необходимости вы можете скопировать данные, диаграммы или объекты на лист диаграммы. Вы также можете вкопировать данные, скопированные из другой программы, и в качестве рисунка в Microsoft Office Excel.
Копирование данных в виде рисунка в Excel
Выйдите из ячеек или щелкните диаграмму или объект, который вы хотите скопировать как рисунок.
На вкладке Главная в группе Буфер обмена щелкните стрелку рядом с кнопкой Копировать ивыберите Копировать как рисунок.
В диалоговом окне Копирование рисунка сделайте следующее:
В области Внешнийвид выберите нужный вариант.
В областиФормат выберите нужный параметр.
Для лучшего качества изображения убедитесь, что выбраны параметры Как на экране и Рисунок. Однако для сохранения качества рисунка элементы, скопируйте их с помощью параметров Как, показанных на экране и Рисунок, и всегда в сохраняются на 100 % от исходного размера. Например, при масштабе 75 %, скопированные с него объекты могут отображаться больше, так как они вкоплены в реальный размер.
Если вы выбрали диапазон ячеек, но не хотите, чтобы линии сетки отображались при вклеии, сначала перейдите к представлению > Показать > отобразить параметр Сетка.
Щелкните на этом или другом документе место в документе, куда вы хотите вировать рисунок.
На вкладке Главная в группе Буфер обмена нажмите кнопку Вироватьили нажмите CTRL+V.
При необходимости вы можете изменить это изображение. Дополнительные сведения см. в разделе Формат рисунков статьи Вставка рисунков.
Скопируйте данные из другой программы и в виде изображения в Excel
В другой программе, например Word, используйте команду Копировать для копирования данных, которые вы хотите вкопировать как рисунок в Excel.
В Excel щелкните в любом месте таблицы или диаграммы, куда вы хотите вкопировать скопированные данные в качестве рисунка.
На вкладке Главная в группе Буфер обмена щелкните стрелку под кнопкой В таблицу ивыберите специальную ветвь.
В диалоговом окне Специальная вставка выберите В виде рисунка или В виде ссылки в зависимости от того, как вы хотите вировать рисунок, а затем в поле Как выберите Рисунок (расширенный метафил) и нажмите кнопку ОК.
На вкладке Формат внести необходимые изменения.
При необходимости вы можете изменить это изображение. Дополнительные сведения см. в разделе Формат рисунков статьи Вставка рисунков.
Дополнительные сведения
Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.
Создает изображение из существующего файла. Возвращает объект Shape, который представляет новую картину.
Синтаксис
выражения. AddPicture (FileName, LinkToFile, SaveWithDocument, Left, Top, Width, Height)
выражение: переменная, представляющая объект Shapes.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
FileName | Обязательный | String | Файл, из которого должно быть создано изображение. |
LinkToFile | Обязательный | MsoTriState | Файл для ссылки. Используйте msoFalse, чтобы сделать изображение независимой копией файла. Используйте msoTrue для привязки изображения к файлу, из которого он был создан. |
SaveWithDocument | Обязательный | MsoTriState | Сохранение изображения с помощью документа. Используйте msoFalse для хранения только сведений о ссылках в документе. Используйте msoTrue для сохранения связанной картинки с документом, в который она вставлена. Этот аргумент должен иметь значение msoTrue, если LinkToFile имеет значение msoFalse. |
Left | Обязательный | Single | Положение (в точках)верхнего левого угла изображения относительно верхнего левого угла документа. |
Top | Обязательный | Single | Положение (в точках) верхнего левого угла изображения относительно верхней части документа. |
Width | Обязательный | Single | Ширина изображения в точках (введите -1, чтобы сохранить ширину существующего файла). |
Height | Обязательный | Single | Высота изображения в точках (введите -1, чтобы сохранить высоту существующего файла). |
Возвращаемое значение
Shape
Пример
В этом примере добавляется изображение, созданное из файла Music.bmp в myDocument. Вставленная картинка связана с файлом, из которого он был создан и сохранен с помощью myDocument.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Читайте также: