Как вывести полное имя файла рисунка - VBA
Формулировка задачи:
Реализовать интерфейс с объектами, представленными на рисунке. Для кнопок CommandButton1 и CommandButton2 загружаются изображения при инициализации формы UserForm1. При нажатии на кнопку с помощью меток Label1 и Label2 выводится полное имя файла рисунка.
Решение задачи: «Как вывести полное имя файла рисунка»
textual
Листинг программы
'Ïðè ïåðâîì Г§Г*ГЇГіГ±ГЄГҐ ôîðìû ôîðìèðóåì ñîñòГ*Гў çîîïГ*ðêГ*.
Private Sub UserForm_Initialize()
Dim oIE As Object, oIEDoc As Object, oElems As Object, oAnc As Object
Dim oHTTP As Object, oStream As Object, oCB As Object
Dim animals() As String, animalColl As New Collection
Dim urls As Variant, lnk As Variant
Dim i As Long, n As Long, newi As Long
Dim t As String, p As String, picName As String
On Error Resume Next
Set oIE = CreateObject("InternetExplorer.Application")
On Error GoTo 0
If oIE Is Nothing Then
MsgBox "ÈçâèГ*ГЁГІГҐ, Г*Г® äëÿ Г°Г*áîòû Г¤Г*Г*Г*îãî Г¬Г*êðîñГ* ГўГ*Г¬ ïðèäåòñÿ ГіГ±ГІГ*Г*îâèòü Internet Explorer."
Unload Me
Exit Sub
End If
urls = Array( _
"https://www.google.ru/search?q=%D0%BC%D0%BB%D0%B5%D0%BA%D0%BE%D0%BF%D0%B8%D1%82%D0%B0%D1%8E%D1%89%D0%B8%D0%B5+%D0%B6%D0%B8%D0%B2%D0%BE%D1%82%D0%BD%D1%8B%D0%B5&tbm=isch", _
"https://www.google.ru/search?q=%D0%BF%D1%82%D0%B8%D1%86%D1%8B&tbm=isch", _
"https://www.google.ru/search?q=%D1%80%D1%8B%D0%B1%D1%8B&tbm=isch") 'Ññûëêè Г*Г* ïîèñê ÷åðåç Google ГЄГ*ðòèГ*îê - ìëåêîïèòГ*ГѕГ№ГЁГµ, ГЇГІГЁГ¶ ГЁ ðûá.
For i = 0 To 2
oIE.Navigate urls(i) 'Ãóãëèì ГЄГ*ðòèГ*ГЄГЁ ÷åðåç Internet Explorer.
While oIE.Busy Or oIE.ReadyState < 4 'Æäåì, ïîêГ* ГўГҐГЎ-Г±ГІГ°Г*Г*ГЁГ¶Г* Г§Г*ãðóçèòñÿ.
DoEvents
Wend
Set oIEDoc = oIE.Document
Set oElems = oIEDoc.getElementsByClassName("rg_l")
For Each oAnc In oElems 'Äëÿ ГЄГ*æäîãî èçîáðГ*æåГ*ГЁГї-ãèïåðññûëêè Г*Г* Г±ГІГ°Г*Г*ГЁГ¶ГҐ...
i = i + 1
lnk = oAnc.getAttribute("href") 'a) ïîëó÷Г*ГҐГ¬ Г§Г*Г*Г·ГҐГ*ГЁГҐ Г*òðèáóòГ* "href"
lnk = Mid(lnk, InStr(lnk, "imgurl")) 'ГЎ) ïîëó÷Г*ГҐГ¬ ГўГ*óòðè Г*ГҐГЈГ® ГЇГ*Г°Г*ìåòð "imgurl"
lnk = Mid(Left(lnk, InStr(lnk, "&") - 1), 8) 'Гў) îòñåêГ*ГҐГ¬ ñëîâî "imgurl=" ГЁ âòîðè÷Г*ûå ГЇГ*Г°Г*ìåòðû.
'Debug.Print lnk
animalColl.Add lnk
Next oAnc
If animalColl.Count = 0 Then
MsgBox "ГѓГҐГ*ГЁГ*ëüГ*Г®! ГЉГ*ГЄ ГўГ» óìóäðèëèñü Г±Г*îâГ* ïîëó÷èòü ГЅГІГі îøèáêó? ГђГ*Г±Г±ГЄГ*æèòå ñâîþ èñòîðèþ Aksima Г*Г* ôîðóìå cyberforum.ru"
Unload Me
Exit Sub
End If
Next i
Set oIE = Nothing
'Г‡Г*Г*îñèì ñïèñîê ññûëîê Гў Г¬Г*Г±Г±ГЁГў - Г± Г¬Г*ññèâîì óäîáГ*ГҐГҐ.
n = animalColl.Count - 1
ReDim animals(n) As String
For i = 0 To n
animals(i) = animalColl(i + 1)
Next i
'ÏåðåìåøèâГ*ГҐГ¬ ññûëêè ñëó÷Г*Г©Г*ûì îáðГ*çîì.
Randomize
For i = 0 To 1
newi = Int(Rnd() * (n + 1))
t = animals(i)
animals(i) = animals(newi)
animals(newi) = t
Next i
For i = n To 1 Step -1
newi = Int(Rnd() * (i + 1))
t = animals(i)
animals(i) = animals(newi)
animals(newi) = t
Next i
'ÈçîáðГ*æåГ*ГЁГї ГЇГ® äâóì ïåðâûì ññûëêГ*Г¬ Г§Г*ãðóæГ*ГҐГ¬ Г*Г* ГЄГ*îïêè,
'ГЁ ГўГ±ГҐ ññûëêè ñîõðГ*Г*ГїГҐГ¬ Гў ñêðûòîå òåêñòîâîå ïîëå äëÿ
'Г¤Г*ëüГ*åéøåãî èñïîëüçîâГ*Г*ГЁГї.
tbAnimals = Join(animals, ",")
Set oHTTP = CreateObject("MSXML2.XMLHTTP")
Set oStream = CreateObject("ADODB.Stream")
oStream.Type = 1
p = ThisWorkbook.Path & "\"
For i = 0 To 1
picName = Mid(animals(i), InStrRev(animals(i), "/") + 1)
oHTTP.Open "GET", animals(i), False
oHTTP.Send
oStream.Open
oStream.Write oHTTP.responseBody
oStream.SaveToFile p & picName
oStream.Close
Set oCB = Me.Controls("cbAnimal" & i + 1)
oCB.Picture = LoadPicture(p & picName, oCB.Width, oCB.Height)
Kill p & picName
Next i
Set oStream = Nothing
Set oHTTP = Nothing
f = True
End Sub