Могу ли я использовать VBA для импорта изображений (GIF-файлов) из Интернета в Excel? - PullRequest
3 голосов
/ 24 января 2012

У меня есть список URL-адресов файлов .gif на листе Excel. Я хочу использовать VBA для запроса этих веб-сайтов и вставки этих изображений в один лист. Я использую Excel 2007.

Я попытался использовать функцию «Получить внешние данные - из Интернета» для запроса веб-сайта, но он вернул следующую ошибку:

"Невозможно открыть http: //.../blah.GIF. Интернет-сайт не может вернуть запрашиваемый вами объект. (HTTP / 1.0 403)"

Это потому, что Excel не может импортировать онлайн-изображения с помощью этой функции? Или эта проблема конкретно связана с сайтом?

И самое главное, есть ли другой способ сделать это полностью в VBA?

Ответы [ 2 ]

9 голосов
/ 25 января 2012

Да, вы можете сделать это.Это на самом деле довольно легко.В Excel есть функция AddPicture.Из справки Excel VBA:

выражение . AddPicture (имя файла, LinkToFile, SaveWithDocument, слева, сверху, ширина, высота)

Используйте вот так:

Sheets(1).Shapes.AddPicture "http://www.mywebsite.com/images/map.gif" _
                          , msoFalse, msoTrue, 100, 100, 500, 600

Влево, сверху, ширина и высота обязательны для заполнения и указаны в точках.

3 голосов
/ 25 января 2012

Сначала вы захотите скачать изображение.Есть несколько способов сделать это.Я использую API URLDownloadToFile.

Используйте функцию API URLDownloadToFile для загрузки файла с URL-адреса в файл *:

Private Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" (ByVal pCaller As Long, _
    ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

(* посетите полную ссылкукод)

Затем пример кода, подобный этому, импортирует их на рабочий лист, где вам удобно:

Из Вставка изображений с использованием VBA в Microsoft Excel *:

Sub TestInsertPicture()
    InsertPicture "C:\FolderName\PictureFileName.gif", _
        Range("D10"), True, True
End Sub

(* перейдите по ссылке для полного кода)

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

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