Avatar billede hobit Novice
31. oktober 2007 - 09:07 Der er 10 kommentarer og
1 løsning

VBA-kode som henter tabel fra hjemmeside

Jeg er ved at lave et regneark, som elever skal benytte i et aktiespil. Her vil jeg gerne hente kurserne fra en hjemmeside (www.borsen.dk/1649) direkte ind i arket når de åbner det.

Det kan godt lade sig gøre med en funktion i Excel 2007, men det kan desværre ikke lade sig gøre at lave opslag (LOPSLAG) i de data, der er blevet hentet!

Kan nogen lave en programmeret macro som gør nogenlunde det samme?
Avatar billede ffsoft Praktikant
31. oktober 2007 - 12:33 #1
Marker alle data i tabellen, start forneden det er det nemmeste.
Tryk Ctrl-C. Åben Excel. Sæt markøren i en celle. Tryk Ctrl-V

Så har du det hele inclusive links.

Børsen har rettighederne til data, så de vil sikkert ikke være
begejstrede for denne metode.
Avatar billede hobit Novice
31. oktober 2007 - 13:13 #2
så har jeg ikke udtrykt mig klart nok!!

Excel skal gøre det automatisk, så jeg kan lave 'LOPSLAG' af kurser (der viser hvad deres aktier er værd denne dag).
Jeg kan godt finde ud af at få kurserne hentet med en macro som er tildelt en tastefunktion (Ctr+k):
Sub kurser()
'
' kurser Makro
'
' Genvejstast:Ctrl+k
'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://trader.borsen.dk/borsendk/site/miniweb/miniweb.page?magic=(cc (level1 1) (level3 5))" _
        , Destination:=Range("$A$1"))
        .Name = "miniweb.page?magic=(cc (level1 1) (level3 5))"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
End Sub

Problemet med denne hentning er at arket ikke acceptere dette som en tabel hvor man kan lave fx LOPSLAG i!! LOPSLAG("Aab";A:G;5;FALSK) skulle hente kursen på Aab's aktie, men henter ingenting. Og så ville jeg gerne have kurserne hentet ved opstart, så eleverne ikke skal taste noget for at det skal lykkes!!

Kan det lade sig gøre?
Avatar billede supertekst Ekspert
31. oktober 2007 - 14:13 #3
Problemet er, at hver aktienavn slutter med en blank (mellemrum) - prøv at indtaste en blank efter aktienavnet.

Disse blanke kan fjernes via VBA....
Avatar billede supertekst Ekspert
31. oktober 2007 - 15:39 #4
Koden indsættes i ThisWorkbook:

Private Sub workbook_activate()
Dim svar
    svar = MsgBox("Opdatering af kurser?", vbYesNo)
    If svar = 6 Then
        hentKurser
        fjernBlanke
    End If
End Sub
Private Sub fjernBlanke()                          'I kolonne A
    For ræk = 2 To 1000
        If Cells(ræk, 1) = "" Then
            Exit Sub
        Else
            Cells(ræk, 1) = Left(Cells(ræk, 1), Len(Cells(ræk, 1)) - 1)
        End If
    Next ræk
End Sub
Private Sub hentKurser()
    ActiveWorkbook.Sheets(1).Activate
    Range("A1:G1000").Select
    Selection.Clear
   
    With ActiveSheet.QueryTables.Add(Connection:= _
        "URL;http://trader.borsen.dk/borsendk/site/miniweb/miniweb.page?magic=(cc (level1 1) (level3 5))" _
        , Destination:=Range("$A$1"))
        .Name = "miniweb.page?magic=(cc (level1 1) (level3 5))"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .WebSelectionType = xlAllTables
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=False
    End With
   
    ActiveSheet.Columns.AutoFit
End Sub
Avatar billede hobit Novice
31. oktober 2007 - 16:07 #5
Virker perfekt.

Tak igen Supertekst.
Dine point
Avatar billede supertekst Ekspert
31. oktober 2007 - 16:25 #6
Så får du et svar
Avatar billede supertekst Ekspert
05. november 2007 - 09:22 #7
Det bliver først mine point, hvis du accepterer mit svar.
Avatar billede hobit Novice
05. november 2007 - 10:06 #8
så er det vist gjort
Avatar billede supertekst Ekspert
05. november 2007 - 11:10 #9
Nej - desværre.

Du skal markere det svar, som du vil acceptere og derefter aktivere knappen "Accepter svar" - så vidt jeg ved - har aldrig prøvet..
Avatar billede hobit Novice
05. november 2007 - 11:22 #10
hjalp det?
Avatar billede supertekst Ekspert
05. november 2007 - 11:31 #11
Ja - tak for det.

Vi kan jo så også få afsluttet "Automatisk dato til logbog"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester