Halloj. Som Tobbe skrev, den funktionen hämtar källkoden och sen Regular Expressions så är allt fixat... Kärlek.. Tackar och bugar.. En sista fråga, hur anropar jag GetKolliData för att visa alla värden som hittas?? Använd funktionerna såhär... Jag körde som du sa och använde: Sorry, ett litet fel smög sig in i funktionen... Ett steg närmare glädjens högtid.. Men jag få en Type Mismatch på första Split'en (Sections = Split(Data, vbCrLf) Testa lägga till () efter både Sections och Parts så det bli Sections() = Split... och Parts() = Split... Nu funkar det.. Jag fimpade () på Sections och Parts. När jag la dem innan så fick jag Subscript out of range. Men utan dem funkade det klockrent.. Tack så mycket för hjälpen!!! :o) Bra att du fick det att fungera, men det hade ju med parenteserna att göra men inte på det sättet jag tänkte mig ;) Det är för att underlätta mitt eget liv en smula.. I jobbet så måste jag sammanställa en rapport över de paket jag levererar. Och ok om det är som nu under semestertid, typ 10 paket om dagen, men sen när det är uppåt en 60-70 så är det halvsegt att dela in dem i regioner och vikter.. Så då gör jag helt enkelt en liten snurra som själv delar in det efter givna regler, utifrån HTML-filen. Så slipper jag dunka huvudet i betongväggen i ren desperation senare.. ;) Ok, låter ju bra att du kan automatisera lite =) Precis, då kan man låta burken SJÄLV gå igenom alla 568 postnummer och vilken zon de tillhör och på så sätt skyffla in dem där de ska vara. Hur gör du för att skapa ett RegExp mönster? Det är rörigt det där, jag funderade på om jag skulle inkludera det där Kollinumret också (det stora fetstilta) för att ha knas på när något barkar åt helsike. Jadu, jag har helt enkelt bara lärt mig med tiden hur man skriver fungerande mönster ur huvudet, även om de ibland kan behöva finslipas lite... Ahh.. Tackar och bugar, utmärkt, måste bara justera den så den fixar sig med lite olika typer att kolli ID'n, just här är det BD och XJ, men det KAN också vara en massa andra sådana prylar, eller bara en massa siffror också, det är en rörig smet det där... Jag satt och läste lite på den sidan nu, det verkar ju ganska sunt. Även om själva Pattern delen mest liknar en ettårings lek med tangentbordet vid första anblicken.. Kan fungera med följande mönster då, har dock inte testat... Det här är herrejesus svårt i mina ögon, nu har jag läst så det blöder ur öronen på mig men jag är fortfarande inte helt med på det.. Men Man måste ju kunna matcha (kanske inte med RegExp, vad vet jag) så att den plockar ut värdet mellan: Se mitt förra inlägg, så ska mönstret se ut... Oj oj, det här är så bra att jag nästan börjar gråta.. Tack så HEMSKT mycket för hjälpen.. Sanslöst bra.. Tack som fan!! :o)))))) Varsågod, det var bara kul att kunna hjälpa =)Gräva ut värden.
Jag har en liten fundering, går det att plocka ut värden ur en HTML-fil genom att läsa den (mha FSO)??
Om någon känner sig manad så har jag filen på
http://www.jaggernaut.com/test.html
De saker jag är ute och fiskar efter är postnummer samt vikt.
Någon som har en idé?? Jag testade lite med InStr men det rör till det (kan ju också vara jag själv som rör till det förvisso)...
Hur som helst, jag är ute efter att kunna mata igenom hela HTML-filen efter postnummer och vikt, resten är oväsentligt.
//JohannesSv: Gräva ut värden.
<code>
Function GetKolliData(Data)
Dim RegExp
Dim Res
Set RegExp = New RegExp
RegExp.Global = True
RegExp.IgnoreCase = True
'Mönster för postnummer och vikt
RegExp.Pattern = "<b>Postnr:.+?<b>(\d+).+?<b>Vikt:.+?<b>\s*([^<]+)<"
Dim Matches
Matches = RegExp.Execute(Data)
Dim Match
For Each Match In Matches
If Not Len(Res) = 0 Then Res = Res & vbCrLf
Res = Res & RegExp.Replace(Match.Value, "$1" & vbTab & "$2")
Next
Set RegExp = Nothing
Set Matches = Nothing
Set Match = Nothing
GetKolliData = Res
End Function
</code>
Ovanstående borde fungera, retunerar en sträng där varje sektion är åtskild av radbrytning och postnummer samt vikt är åtskild av tab...
Mvh,
ThomasSv: Gräva ut värden.
Sv: Gräva ut värden.
Ersätt adressen till adressen du vill hämta informationen från...
Fungerar även om det är en dynamisk sida som asp eller php eftersom allt ändå är HTML i slutändan...
<code>
Dim Data
Data = GetKolliData(GetText("http://www.dindomän.se/dinmapp/filen.html"))
Dim Sections()
Sections = Split(Data, vbCrLf)
Dim i
Dim Parts()
For i = 0 To UBound(Sections)
Parts = Split(Sections(i), vbTab)
Respone.Write(Part(0)) 'Skriver ut postnummer
Respone.Write(Part(1)) 'Skriver ut vikten
Next
</code>
Med hjälp av ovanstående borde du komma igång med att hämta ut datat...
Mvh,
ThomasSv: Gräva ut värden.
Data = GetKolliData(GetText("http://www.jaggernaut.com/test.html"))
Men jag får samma fel som jag fick innan:
Microsoft VBScript runtime (0x800A01C2)
Wrong number of arguments or invalid property assignment
Och den raden i koden är:
Matches = RegExp.Execute(Data)
Nåt är fuffens...Sv: Gräva ut värden.
Följande är testat och fungerar...
<code>
Function GetKolliData(Data)
Dim RegExp
Dim Res
Set RegExp = New RegExp
RegExp.Global = True
RegExp.IgnoreCase = True
'Mönster för postnummer och vikt
RegExp.Pattern = "<b>Postnr:.+?<b>(\d+).+?<b>Vikt:.+?<b>\s*([^<]+)<"
Dim Matches
Set Matches = RegExp.Execute(Data)
Dim Match
For Each Match In Matches
If Not Len(Res) = 0 Then Res = Res & vbCrLf
Res = Res & RegExp.Replace(Match.Value, "$1" & vbTab & "$2")
Next
Set RegExp = Nothing
Set Matches = Nothing
Set Match = Nothing
GetKolliData = Res
End Function
</code>
Mvh,
ThomasSv: Gräva ut värden.
)
Jag testade att ersätta alla komman med punkter i tron om att det bara hade med numeriska värden och liknande att göra, men den bad mig fortfarande att fara och flyga.. Någon idé om vad som kan vara snett?Sv: Gräva ut värden.
Mvh,
ThomasSv: Gräva ut värden.
Sv: Gräva ut värden.
Är inte varje dag jag sitter och skriver ASP...
Får man fråga vad det ska användas till? =)
Mvh,
ThomasSv: Gräva ut värden.
Sv: Gräva ut värden.
Är ju det programmering är till för ;)
Mvh,
ThomasSv: Gräva ut värden.
Sv: Gräva ut värden.
Sv: Gräva ut värden.
Men i ditt fall är det inte speciellt svårt att ordna så att den även tar kollinummer...
Är till exempel BD345678912XJ ett kollinummer?
Börjar det alltid på "BD" och slutar alltid på "XJ" eller kan mönstret variera?
För att även få med kollinummer kan du använda följande funktion, endast lite modigierad mot den förra...
<code>
Function GetKolliData(Data)
Dim RegExp
Dim Res
Set RegExp = New RegExp
RegExp.Global = True
RegExp.IgnoreCase = True
'Mönster för postnummer och vikt
RegExp.Pattern = "<b>(BD\d+XJ).+?<b>Postnr:.+?<b>(\d+).+?<b>Vikt:.+?<b>\s*([^<]+)<"
Dim Matches
Matches = RegExp.Execute(Data)
Dim Match
For Each Match In Matches
If Not Len(Res) = 0 Then Res = Res & vbCrLf
Res = Res & RegExp.Replace(Match.Value, "$1" & vbTab & "$2" & vbTab & "$3")
Next
Set RegExp = Nothing
Set Matches = Nothing
Set Match = Nothing
GetKolliData = Res
End Function
</code>
Ovanstående retunerar datat i ordningen Kollinummer, Postnummer, Vikt så när du kört split så finns det tre värden, 0 är kollinummer, 1 är postnummer och 2 är vikten...
Om du vill lära dig regular expressions rekommenderar jag http://www.regular-expressions.info
Mvh,
ThomasSv: Gräva ut värden.
:o)Sv: Gräva ut värden.
<code>
<b>([^\s]+).+?<b>Postnr:.+?<b>(\d+).+?<b>Vikt:.+?<b>\s*([^<]+)<
</code>
Mvh,
ThomasSv: Gräva ut värden.
<td align="left" width="25%" colspan="25"><font size="4"><b>
OCH
</b></font></td>
Eller har jag helt fel?? För det är däremellan som det finns matnyttigheter (d v s kolli-ID)Sv: Gräva ut värden.
Men eftersom jag inte hade satt code taggarna runt den som blev alla b taggar aktiva så de inte syntes...
Men det ska fungera...
Mvh,
ThomasSv: Gräva ut värden.
/JohannesSv: Gräva ut värden.
Gör inte speciellt mycket annat om dagarna så, är arbetslös...
Är det något mer så är det bara att kontakta mig =)
Mvh,
Thomas