Avatar billede fimo Seniormester
21. juni 2007 - 15:08 Der er 20 kommentarer og
1 løsning

hente eksterne data og gem dem

Jeg har lige et spørgsmål vedr. excel 2000.
Jeg har lavet et excel ark med et faneblad 2 hvor jeg løbende henter nogle data fra nettet som kan ændre sig frem til kl 1900
hver dag og derefter ændre de sig ikke mere den dag.
og de tal bliver skrevet i en celle på faneblad 1
(=sum(cellen fra faneblad 2)

Det jeg har behov for er at de data'er der bliver hentet frem til kl 19,00 hver dag skal gemmes i en celle i excel på fanebladet 1 celle A1 og derved ikke skal overskrives mere.

Og så dagen efter skal man lave det samme igen MEN så skal data'erne gemmes i celle A2 på faneblad 1

og 3 dagen, skal det gemmes i celle A3 osv....

Men jeg har igen ide om hvordan jeg får excel til automatisk
at gemme data i en NY celle efter kl 19,00 hver dag ?

Kan det overhovedet lade sige gøre og hvordan ?
Avatar billede kabbak Professor
21. juni 2007 - 15:20 #1
Brug en Ontime funktion, til at skrive rækkenummeret, i en celle.
når du så gemmer date

Range("A1").offset(dinCelleMed rækkeNummeret,0) = nyedata
Avatar billede fimo Seniormester
21. juni 2007 - 16:45 #2
Hej kabbak, tak for dit svar men jeg er altså ret grøn vedr excel, så kan du
forklare lidt mere hvad det reelt er jeg skal gøre og hvor henne ?
:o)
Avatar billede fimo Seniormester
23. juni 2007 - 12:08 #3
smider lidt flere point til den som kan løse dette ?
Avatar billede kabbak Professor
23. juni 2007 - 13:04 #4
1 ark kaldet"NR", i A1 skrives den række der smides data i i øjeblikket.

Public Sub StartTimer()
' starter timeren
    Application.OnTime TimeSerial(19, 0, 0), "SkiftRække"
End Sub

Public Sub StopTimer()
' Stopper timeren
    Application.OnTime TimeSerial(19, 0, 0), "SkiftRække", , False
End Sub

Public Sub SkiftRække()
    Worksheets("NR").Range("A1") = Worksheets("NR").Range("A1") + 1    ' plusser en til cellen, som styrer rækken
    Application.OnTime TimeSerial(19, 0, 0), "SkiftRække"    ' klar til næste dag
End Sub


Public Sub HentData()
' Det er denne linie du skal bruge i din datahentnings makro
    Worksheets("Data").Range("A" & Worksheets("NR").Range("A1")) = nyData
End Sub
Avatar billede fimo Seniormester
25. juni 2007 - 10:51 #5
hej igen kabbak,
Tak for dit svar - forklaring., jeg har ikke glemt dig men har forsøgt at teste
din kode på mit excel ark og jeg er ikke 100% sikker på at jeg gør det korrekt.
Jeg har taget denne del:
Public Sub StartTimer()
' starter timeren
    Application.OnTime TimeSerial(19, 0, 0), "SkiftRække"
End Sub

Public Sub StopTimer()
' Stopper timeren
    Application.OnTime TimeSerial(19, 0, 0), "SkiftRække", , False
End Sub

Public Sub SkiftRække()
    Worksheets("NR").Range("A1") = Worksheets("NR").Range("A1") + 1    ' plusser en til cellen, som styrer rækken
    Application.OnTime TimeSerial(19, 0, 0), "SkiftRække"    ' klar til næste dag
End Sub
og indsat i et nyt faneblad i min excel fil via Visual basic.

Så har jeg oprettet en makro med denne del = den melder fejl hos mig,
Public Sub HentData()
' Det er denne linie du skal bruge i din datahentnings makro
    Worksheets("Data").Range("A" & Worksheets("NR").Range("A1")) = nyData
End Sub

Og den er jeg nemlig i tvivl om hvor jeg skal placere henne ?

Kan du lede mig på sporet ?
Avatar billede kabbak Professor
25. juni 2007 - 12:52 #6
Den sidste er et eksempel på, hvordan du får din oprindelige makro, til at skrive i den rigtige række.
Jeg skal se din oprindelige makro, den der henter data, for at lave det korrekt.
Avatar billede kabbak Professor
25. juni 2007 - 12:54 #7
Alle makroerne skal være i et Modul, ikke i ark eller ThisWorkbook modulet
Avatar billede fimo Seniormester
25. juni 2007 - 14:56 #8
Her er den makro jeg har lavet som henter data fra nettet og samler et total tal i en celle

Application.ScreenUpdating = False
    Sheets("Lukkekursen").Select
    ActiveWindow.SmallScroll Down:=-18
    Range("B2").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("B6").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("B11").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("B16").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("B21").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("B26").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    ActiveWindow.SmallScroll Down:=9
    Range("B31").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Range("B36").Select
    Selection.QueryTable.Refresh BackgroundQuery:=False
    Application.ScreenUpdating = True
    ActiveWindow.SmallScroll Down:=9
    Sheets("Dag").Select
Avatar billede kabbak Professor
25. juni 2007 - 16:45 #9
Så vidt jeg kan se, så har du 8 pivot tabeller, der er i 8 forskellige rækker, er det rigtig ??
Avatar billede fimo Seniormester
26. juni 2007 - 09:28 #10
hmmmmm.... det ved jeg faktisk ikke om jeg har :o)
Jeg har oprettet et excel ark med et faneblad hvor jeg har lavet 8
rækker hvor jeg henter data fra nettet i hver række
feks B6 + B11 + B16 osv....
Ja du må undskylde at jeg ikke er 100% stærk i excel og derfor spør lidt "dumt"
Avatar billede kabbak Professor
26. juni 2007 - 16:02 #11
Jeg er ikke helt med, arket "Lukkekursen", er den der den skal flytte sig, eller er det i arket "Dag".

Hvis det er i arket "Dag", kan jeg ikke se, hvor du gemmer i en celle. ?
Avatar billede fimo Seniormester
27. juni 2007 - 08:36 #12
Jeg tager data fra "lukkekurs" fanebladet og så står jeg på fanebladet "dag"
hvor jeg bare har indsat sådan en her"=SUM(Lukkekursen!B6)" og i næste række
=SUM(Lukkekursen!B11) osv....
og summen af de tal bliver lagt sammen i en total sum på fanebladet "dag" og det er det tal som jeg ønsker at overføre hverdag til en ny celle i fanebladet "dag",
feks cellen mandag,tirsdag,onsdag osv...
Avatar billede kabbak Professor
27. juni 2007 - 19:02 #13
kan du sende en eksempel mappe, hvor du har din struktur i.
kabbak snabela tiscali dot dk
Avatar billede fimo Seniormester
28. juni 2007 - 11:33 #14
så har jeg sendt en mail til dig :o)
Avatar billede kabbak Professor
28. juni 2007 - 12:32 #15
kikker på den i aften
Avatar billede kabbak Professor
28. juni 2007 - 19:01 #16
her er koden som jeg kom frem til.

Dim OP As Date
Global Const SK As Date = #7:00:00 PM# ' tiden for rækkeskift, er sat til kl 19:00:00 dansk tid
Global Const OPMIN As Date = #12:15:00 AM# ' kursopdatering, er sat til hvert kvarter

Private Sub OpdaterKurser()
    ActiveWorkbook.RefreshAll    ' opdaterer alle kurser fra nettet
    Worksheets("Lukkekursen").Range("G2") = Now()
    OP = Now() + OPMIN    ' sætter ny tid for opdatering af kurser
    Worksheets("Dag").Range("F3") = OP
    Application.OnTime OP, "OpdaterKurser"
End Sub

Public Sub StartTimer()
' starter timeren
Worksheets("Dag").Range("G5") = "Timer er STARTET"
Worksheets("Dag").Range("G5").Interior.ColorIndex = 50
  Worksheets("Lukkekursen").Range("J2") = SK
    Application.OnTime SK, "SkiftRække"    ' sætter tid for opdatering af arket dag
    OP = Now() + OPMIN    ' sætter starttid for opdatering af kurser
    Worksheets("Dag").Range("F3") = OP
    Application.OnTime OP, "OpdaterKurser"
End Sub

Public Sub StopTimer()
' Stopper timeren
On Error Resume Next
Worksheets("Dag").Range("G5") = "Timer er STOPPET"
Worksheets("Dag").Range("G5").Interior.ColorIndex = 3
    Application.OnTime SK, "SkiftRække", , False
    Application.OnTime OP, "OpdaterKurser", , False
End Sub

Private Sub SkiftRække()
    If Weekday(Now()) <> vbSaturday And Weekday(Now()) <> vbSunday Then
        If Weekday(Now()) = vbMonday Then
          Worksheets("Lukkekursen").Range("I2") = Worksheets("Lukkekursen").Range("I2") + 2
            ' plusser to til cellen, som styrer rækken, fordi der var weekend
        Else
            Worksheets("Lukkekursen").Range("I2") = Worksheets("Lukkekursen").Range("I2") + 1
            ' plusser en til cellen, som styrer rækken
        End If
      GemData
    End If
    Application.OnTime SK, "SkiftRække"    ' sætter tid for  næste dag
End Sub

Private Sub GemData()
'Worksheets("Lukkekursen").Range("I2"), bruges til at styre rækken
    Worksheets("Dag").Range("B" & Worksheets("Lukkekursen").Range("I2")) = Worksheets("Dag").Range("E14")
    ThisWorkbook.Save    ' gemmer mappen
End Sub
Avatar billede fimo Seniormester
29. juni 2007 - 09:23 #17
>kabbak< PERFEKT ARBEJDE !

Det var lige præcis det som jeg skulle bruge og god forklaring du har skrevet ud for hver felt - Tak for hjælpen :o)

Smid lige et svar så du kan få dine velfortjente point
Avatar billede fimo Seniormester
29. juni 2007 - 09:58 #18
Fandt lige en lille ting, som jeg ville spørge om da jeg sad og prøvede at ændre dato + klokkeslet
på min pc,
der står feks idag fredag at kl 19,00 skal den skrive i række B162
"Skriver i række 162-klokken: 19:00" og det er som det skal være
men
så skriver den at den vil skrive i række B163 næste gang men b163 er jo den række
hvor jeg har uge nummeret stående, den skulle vel helst skrive i række 164 næste gang = mandag efter en weekend eller er det mig som gør noget forkert ?
men tak endnu engang
:o)
Avatar billede fimo Seniormester
29. juni 2007 - 10:02 #19
men nu kan jeg se at den rent faktisk SKRIVER i række 164 som den skal, så det er altså bare teksten der står forkert, dvs at den vil skrive i række 163 iso 164
fra fredag efter kl 19,00 frem til mandag efter kl 19,00
Avatar billede kabbak Professor
29. juni 2007 - 10:04 #20
det er korrekt set, koden tager højde for weekend, men det gør teksten i cellen ikke.
Avatar billede fimo Seniormester
29. juni 2007 - 11:19 #21
Okay - men som sagt endnu engang TAK for din hjælp :o)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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