Just nu i M3-nätverket
Jump to content

Felhantering av Excel-webfrågor


Erki

Recommended Posts

Någon som har erfarenhet av att med VBA arbeta med webfrågor/QueryTables? I stort sett får jag det att fungera som jag vill men jag skulle behöva hjälp med felhanteringen.

 

Om jag vill hämta värden från en websida som inte existerar får jag inget felmeddelande (inom rimlig tid) i stället försöker den att ansluta i åtminstone 3-4 minuter.

 

Finns det något sätt att ange hur länge den ska försöka ansluta innan den avbryter eller kanske ännu bättre hur kontrollerar jag att URL:n är giltig innan jag försöker hämta värden från´en icke existerande sida?

 

Link to comment
Share on other sites

Nja, någon sådan erfarenhet av webbfrågor har jag inte...

 

men kanske du kan titta på vilka felkoder som genereras och dra slutsatser därifrån samt via en timer avbryta en fråga som annars stoppar programmet.

 

Nja, jag vet inte, titta igen Excel hjälp och sök på internet...

 

Eller vänta på att någon annan kan hjälpa dig här.

 

Tänkte passa på att flytta denna tråd:

Moderator talar

Flyttar denna tråd till forumet VBA från Officeprogram

 

/T

- moderator för Officeprogram -

 

 

 

Link to comment
Share on other sites

Efter 5 minuter avbryter den sökningen med 'Felkod 1004' Inkompatibla typer och stoppar på raden .Refresh i koden nedan.

 

[color="#0000ff"]Set[/color] Web_resultat = WSQ.QueryTables _
    .Add(Connection:=[GRÅ]"URL;"[/GRÅ] & ISBN_[color="#0000ff"]String[/color], _
        Destination:=WSQ.Cells(2, 2))
[color="#0000ff"]With[/color] Web_resultat
    .WebFormatting = xlNone
    .WebSelectionType = xlSpecifiedTables
    .WebTables = [GRÅ]"5"[/GRÅ]
    .BackgroundQuery = [color="#0000ff"]False[/color]
    .Refresh
[color="#0000ff"]End[/color] [color="#0000ff"]With[/color]

 

Om det inte går att testa om en URL är giltig (utan att det tar fem minuter) skulle jag vilja att den bara försöker i t ex 15 sekunder innan den avbryter. Jag har ~5000 rader i en tabell som ska gås igenom, ca 10 % tror jag ger en ogiltig URL så på något sätt måste jag begränsa söktiden.

 

Jag har varit lite inaktiv ett tag så jag hade helt missat att det kommit ett särskilt forum för VBA.

 

[inlägget ändrat 2004-08-16 22:11:15 av Erki]

Link to comment
Share on other sites

har du löst detta ännu?

 

Min enkla fundering som nu dök upp är om det kanske finns en funktion inom Windows API som du kan nyttja? Jag vet inte, är inte så hemma där.

 

Alternativt.

Se till att köra din frågor i bakgrunden. Sätt en timer för en grupp av frågor, eller enstaka frågor. Efter en bestämd tid exekveras kod som kontrollerar om frågorna fortfarande är aktiva och stoppar de som ej är klara.

 

kanske detta är ett sätt att få det att flyta lite snabbare för dig.

 

Jag har ingen möjlighet att testa detta själv, men kanske det fungerar för dig.

 

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Någon egentlig lösning har jag inte hittat.

 

Jag lade in en rad

[color="#0000ff"]On Error[/color] GoTo Felhantering

och sedan

Felhantering:
WS1.Range([GRÅ]"E"[/GRÅ] & i).Value = [GRÅ]"Boken saknas i register"[/GRÅ]
GoTo Aterhopp

 

Aterhopp gör att exekveringen går vidare på nästa rad.

 

Resultatet blev att med 3200 rader som skulle gås igenom gick felhanteringen in och skrev in värdet i

WS1.Range([GRÅ]"E"[/GRÅ] & i).

~60 gånger. Ungefär lika många gånger avbryter den med

Körfel nr 1004.:
Program- eller objektdefinierat fel.

 

Jag har kört bearbetningen till och från under ett par dagar. Tittat till den till och från och fortsatt bearbetningen från raden efter den som skapade felet.

 

Det skumma är att om jag direkt i webläsaren testar en URL som med VBA koden får felhanteringen att gå igång söker den i ca 5 minuter innan den stoppar med en heltom sida. Precis samma händer med en URL som gett ett körfel. Rimligen borde alla då alla ogiltiga URL:er antingen få felhanteringen att gå in eller att den aldrig fungerar. Jag förstår inget men min uppgift är löst.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...