powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Картинка
2 сообщений из 2, страница 1 из 1
Картинка
    #35653713
birk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо загрузить в excel картинку из Интернета, при нажатии на кнопку обновлять картинку. Есть варианты?
...
Рейтинг: 0 / 0
Картинка
    #35654130
birk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кому нада:
Код: 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.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
Private Const INTERNET_OPEN_TYPE_PRECONFIG =  0 
Private Const INTERNET_OPEN_TYPE_DIRECT =  1 
Private Const INTERNET_OPEN_TYPE_PROXY =  3 
Private Const scUserAgent = "VB Project"
Private Const INTERNET_FLAG_RELOAD = &H80000000
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hOpen As Long, ByVal sUrl As String, ByVal sHeaders As String, ByVal lLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Declare Function CreateStreamOnHGlobal Lib "ole32" (ByVal hGlobal As Long, ByVal fDeleteOnRelease As Long, ppstm As Any) As Long
Private Declare Function OleLoadPicture Lib "olepro32" (pStream As Any, ByVal lSize As Long, ByVal fRunmode As Long, riid As Any, ppvObj As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal lpsz As Any, pclsid As Any) As Long
Private Declare Function GlobalAlloc Lib "kernel32" (ByVal uFlags As Long, ByVal dwBytes As Long) As Long
Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long
Private Declare Sub MoveMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal dwLength As Long)


Public Function PictureFromByteStream(b() As Byte) As IPicture
    Dim LowerBound As Long
    Dim ByteCount  As Long
    Dim hMem  As Long
    Dim lpMem  As Long
    Dim IID_IPicture( 15 )
    Dim istm As stdole.IUnknown

    On Error GoTo Err_Init
    If UBound(b,  1 ) <  0  Then
        Exit Function
    End If
    
    LowerBound = LBound(b)
    ByteCount = (UBound(b) - LowerBound) +  1 
    hMem = GlobalAlloc(&H2, ByteCount)
    If hMem <>  0  Then
        lpMem = GlobalLock(hMem)
        If lpMem <>  0  Then
            MoveMemory ByVal lpMem, b(LowerBound), ByteCount
            Call GlobalUnlock(hMem)
            If CreateStreamOnHGlobal(hMem,  1 , istm) =  0  Then
                If CLSIDFromString(StrPtr("{7BF80980-BF32-101A-8BBB-00AA00300CAB}"), IID_IPicture( 0 )) =  0  Then
                  Call OleLoadPicture(ByVal ObjPtr(istm), ByteCount,  0 , IID_IPicture( 0 ), PictureFromByteStream)
                End If
            End If
        End If
    End If
    
    Exit Function
    
Err_Init:
        MsgBox Err.Number & " - " & Err.Description
End Function


Public Function URL2Pic(ByVal sUrl As String) As StdPicture
Dim hOpen As Long
Dim hOpenUrl As Long
Dim bDoLoop As Boolean
Dim bRet As Boolean
Dim sReadBuffer As String *  2048 
Dim lNumberOfBytesRead As Long
Dim sBuffer As String
Dim b() As Byte

hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString,  0 )
hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString,  0 , INTERNET_FLAG_RELOAD,  0 )
bDoLoop = True
While bDoLoop
sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)
If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
'Screen.MousePointer = vbHourglass
Wend
'Screen.MousePointer = vbNormal
If hOpenUrl <>  0  Then InternetCloseHandle (hOpenUrl)
If hOpen <>  0  Then InternetCloseHandle (hOpen)

'sBuffer - полученный из инета текстовый файл
Set URL2Pic = New StdPicture
b = StrConv(sBuffer, vbFromUnicode)
Set URL2Pic = PictureFromByteStream(b)

End Function

Private Sub CommandButton1_Click()
Image1.Picture = URL2Pic("http://www.onego.ru/images/stories/dop_serv.GIF")
End Sub
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Картинка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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