Webes fájl másolása


 Üdv Mindenki!
vba-ban szeretném automatizálni webes tárhelyen elhelyezett fájlok sajátgépre történő másolását. nem tudom, hogy ez változtathat-e a képleten, mindenesetre egy kis adalék: https kapcsolatról van szó. Előre is köszönök mindennemű segítséget! |
| Internet Transfer Control vagy WinHttpRequest objektum. Én az utóbbit javaslom, példakódot (többek között) itt és itt találsz. |
Hmm, hát akár azt is mondhatnám hogy WinINet, hátha vmi megszálott vagy:)
.NET-ben kicsit egyszerűbb lesz |
Miért lenne bonyolultabb a WinHttpRequest-et használni, mint az annak megfelelő .Net-es osztályt?  |
| Köszi a gyors válaszokat Árnyék és **G**. Először "gyorsan"(már ahogy az egyéb munkák engedik) megnézem a linkeket, aztán majd a próbálkozások, és azok sikerességeinek függvényében lehet, hogy még lesznek kérdéseim. |
Sok a paraméter
Ezt a WinHttpRequest-tel kapcsolatos tapasztalataid alapján írod, vagy csak úgy?
Function BinaryGetURL(URL) Dim Http Set Http = CreateObject("WinHttp.WinHttpRequest.5.1") Http.Open "GET", URL, False Http.Send BinaryGetURL = Http.ResponseBody End Function
Ebben hol a sok paraméter? |
hmm lehet kicsit bekevertem, én ilyesmiket használtam hogy InternetOpenUrl, InternetreadFile meg ilyesmik, de viszonylag régi projektem, most nem szánok rá időt hogy visszanézzem De akkor lehet másról beszéltem bocsi  |
"Function BinaryGetURL(URL)
Dim Http
Set Http = CreateObject("WinHttp.WinHttpRequest.5.1")
Http.Open "GET", URL, False
Http.Send
BinaryGetURL = Http.ResponseBody
End Function"
(előljáróban annyit,hogy viszonylag kezdő vagyok vba-ban)nem teljesen értem ezt a függvényt...
előrször is akármilyen url-t adok át neki, nem tud kapcsolatot teremteni a szerverrel, másodszor pedig azt se nagyon értem, hogy hol kerül sor a mentésre... bár lévén hogy függvény lehetséges, hogy a visszatérési értékét kellene felhasználnom, de mivel már a futtatása közben hibaüzenetet kapok nem tudom megnézni a visszatérési értékét, hogy kiderítsem, hogyan használhatnám fel.
ha tud valaki segíteni az értelmezésben, akkor előre is köszönöm.
addigis google-zom, hátha sikerül megvilágosodnom... |
| sajnos .net-et nem tudok használni, úgyhogy marad a vba-s körülményesebb megoldás... |
| Igen, a visszatérési értékét kéne használnod. És kéne mutatnod egy példát arra, hogy miként próbálod meg használni. Külön9s tekintettel az url paraméternek történő értékadásra. Egyébként a 2 link bármelyikét megnézted? |
ííííííííígen, elolvastam! komolyan mondom, Árnyék, ki tudsz borítani a bizalmatlanságoddal.
Szóval: átadom a függvénynek az url-t egy változóban, aminek a tartalma például: http://m.blog.hu/va/vancello/image/ferrari360.jpg , eddig rendben is van, ezután a http.send sornál dobja a hibaüzenetet. hogy nem tudja létrehozni a kapcsolatot a szerverrel. A visszatérési értéket egyébként valószínüleg nem a megfelelő módon fogadnám, de mivel addig egyenlőre el se jutok, ezért gondolom mind1. |
Ez meglehetősen érdekes. Excel VBA-ban hoztam létre az alábbi kódot:
Sub a() Dim b b = BinaryGetURL("http://m.blog.hu/va/vancello/image/ferrari360.jpg") End Sub
Function BinaryGetURL(URL) Dim Http Set Http = CreateObject("WinHttp.WinHttpRequest.5.1") Http.Open "GET", URL, False Http.Send BinaryGetURL = Http.ResponseBody End Function
b-be szépen bekerült a ResponseBody értéke egy variant tömbként, ahogy kell. Egyébként az 1. linken megtalálod azt, hogyan kell az eredményt beírni egy file-ba. |
hát, az elmúlt időben más projektekkel kellett foglalkoznom, de most hogy kb. a végükre értem, újra itt vagyok. 
Szóval, a dolgok jelenlegi állása alapján arra tippelek, hogy a korábbi hibaüzenetet esetlegesen a céges "védelmi rendszer" okozhatta. Illetve nem tudom, hogy a vba vajon az internet explorer proxy beállításait használja-e, ha igen, akkor nem itt van a kutya elásva, de ha nem, akkor valami módon meg kell adnom a vba-nak, hogy milyen proxy-n keresztül próbáljon kijutni. Ha bárkinek van akármilyen ötlete, észtrevétele ehhez a fejtegetéshez(például, hogy sületlenség ), azt kíváncsian várom, és előre is köszönöm. |
Ezt másold be egy module-ba és próbáld ki:
Option Explicit Declare Function URLDownloadToFileA Lib "urlmon" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
Function DownloadFile(URL As String, FileName As String) As Boolean DownloadFile = URLDownloadToFileA( 0, URL, FileName, 0, 0 ) = 0 End Function
Sub test() If DownloadFile( "http://m.blog.hu/va/vancello/image/ferrari360.jpg", "c:\ferrari.jpg" ) Then MsgBox "hurra!" End If End Sub
---
::Itt:: is ezt kérték. |
| köszi szépen @sanya! működik. esetleg meg tudod(vagy bárki más) mondani, hogy hol találhatok ehhez a témakörhöz tanulható anyagot. előre is köszi! |
Szívesen! 
Nem tudom mi akar lenni az a témakör, VB, VBA, apihívások VB alatt vagy egyéb? Na de, mindenesetre ez az oldal egészen biztos hasznos lesz számodra. Pl. ha a beposztolt példáról akarsz többet, akkor ott a baloldali linkek között az "Api List" alatt, majd az U betű/linkre kattolva, megkeresed a URLDownloadToFile() leírását. Példákat is találsz.  |
|