Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Internet Transfer Control

ddr [04.01.2003 00:09:44]

#

Hei,

yritin kehittää ohjelmanpätkän joka noutaisi halutusta URL-osoitteesta sivun sisällön ohjelmaan niin, että sitä voisi muokata. Yleensä olen käyttänyt tähän tarkoitukseen Excelin "Nouda ulkoiset tiedot" -ominaisuutta. Se on toisaalta kätevä, koska sisältö yleensä ohjautuu suoraan kenttiin ilman, että tarvii perata html-koodia pois jne. Toisaalta tämä tapa on hieman kömpelö ja toimintavarmuudeltaan vähän kyseenalainen erityisesti silloin kun haettavia sivuja on suuri määrä.

Haeskelin tietoja vähän sieltä täältä ja tämänkin palstan keskusteluista löytyi hieman vinkkiä. Ja sitä kautta "Koodivinkit: Visual Basic: Laskenta: Yhteysnopeuslaskuri" jossa periaatteessa toteutetaan juuri se toiminto jota yritän saada aikaiseksi.

Nyt sitten loppui konstit(ymmärrys) kesken. Alla oleva koodi antoi virheilmoituksen:
Run-time error 424: Object required.

Ilmeisesti tuo Internet Transfer Control pitäisi alustaa tai esitellä tai jotain. Ei ole oikein nämä käsitteetkään selvillä, eikä oikein tiedä mistä puhutaan ja mitä tarkoittaa 'objekti', 'menetelmä' yms.

(Yleensä olen ohjelmoinut nauhoittamalla Excelillä makroja ja sen jälkeen muokannut koodia itse. Vaikka jotkut sovellukset ovat melko laajoja ja monimutkaisia, on suurin osa VisualBasicin hienouksista jäänyt minulle vielä hämäräksi. Tälläkin kertaa tuo sovellus on siis Excelin alla olevana VB-makrona. En silti usko, että sillä on mitään tekemistä tuon toiminnan kanssa.)

Private Sub HaeSivu()
Dim d As String
Dim x() As String

inet1.URL = "http://www.esimerkki.com/esim/testi.htm"
'tuohon lainausmerkkien sisään pitää tietenkin tulla joku oikeasti olemassa oleva osoite
d = inet1.OpenURL

End Sub

Jos joku asioista enemmän ymmärtävä osaisi neuvoa niin sitten pääsisin jatkamaan eteenpäin ja ehkä oppisin jotain enemmänkin.

Terveisin
ddr

Antti Laaksonen [04.01.2003 01:11:47]

#

Tuo koodi käyttää Internet Transfer Control -komponenttia, joka täytyy tosiaan löytyä makrosta. Tämä ohje on Excelin versioon 97, mutta todennäköisesti toimii uudemmillakin.

- aktivoi lomake, joka sivun hakee (oletuksena UserForm1)
- valitse valikosta Tools->Additional Controls
- rastita listasta Microsoft Internet Transfer Control ja paina OK
- valitse Toolboxista sinne ilmestynyt uusi komponentti, ja piirrä yksi sellainen lomakkeelle

Nyt Inet1-komponentin pitäisi olla käyttövalmis. Esimerkiksi seuraava ohjelma näyttää MsgBoxissa alkua Googlen sivuista:

Private Sub UserForm_Click()
    MsgBox HaeSivu("http://www.google.fi/")
End Sub

Private Function HaeSivu(sivu As String) As String
    HaeSivu = Inet1.OpenURL(sivu)
End Function

En ole kyllä varma, löytyykö tuota komponenttia koneelta, jos siihen ei ole asennettu varsinaista Visual Basicia, mutta voithan yrittää.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta