Just nu i M3-nätverket
Gå till innehåll

få excel hämta data från CSV automatiskt


MaxRoyale

Rekommendera Poster

Sub HTMLGet()
    Dim strUrl As String
    strUrl = "http://www.football-data.co.uk/mmz4281/1314/E0.csv"
    Dim objHTTP As WinHttpRequest
    Set objHTTP = New WinHttp.WinHttpRequest
   
      objHTTP.Open "GET", strUrl, False
    objHTTP.Send
 
    MySep objHTTP.responsetext
    Set objHTTP = Nothing
    
End Sub
Sub MySep(strData As String)
    Application.ScreenUpdating = False
    Dim strTemp As Variant
    Dim i As Integer
    strTemp = Split(strData, Chr(10))
    Dim strSplits As Variant
    Dim totalVals As Long
    Dim innerTotals As Long
    totalVals = UBound(strTemp)
    With Me ' Me - det blad koden är skriven på, ändra till blad du vill att det ska hamna på.
        For i = 0 To totalVals - 1 'skriver ut raderna
            .Cells(i + 1, 1).Value = strTemp(i)
        Next i
        With .Cells(1, 1)
            .Resize(totalVals + 1).TextToColumns Destination:=.Cells(1, 1), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 4)), DecimalSeparator:=".", TrailingMinusNumbers:=True
        End With
    End With
    
    Application.ScreenUpdating = True
End Sub

Så här ser det ut!

Länk till kommentar
Dela på andra webbplatser

ja, jo, väl samma som tidigare i tråden.

 

 

Problemet är att Excel, när det blir fel i kod, inte alltid stannar på rätt rad. Ofta hamnar man istället vid anropet till någon funktion som i sin tur anropar en annan.

 

men men, testa ändra till

Dim objHTTP As Object
    On Error Resume Next
    Set objHTTP = CreateObject("WinHTTP.WinHTTPrequest.5")  

och om du vill gå vidare, lägg Debug.Print "procedur x, #"

lite härochvar i koden, som brytpunkter.

Länk till kommentar
Dela på andra webbplatser

Ändrade till det du skrev innan, funkar inte.

 

Sedan ändrade jag tillbaka allt och får felet när jag kör makron manuellt.

 

Mina kunskaper har tagit slut nu. Det här med debug.print, provade det men vet inte om jag gjorde rätt.

 

Men när jag försöker stega så blir översta raden gul med ett liten pil vid vänsterkant.

Sub HTMLGet()

Den blir gul.

Privet sub Workbook_open()
LoopThroughDirectory
End Sub

Private Sub Workbook_Open()

End Sub

Och översta raden är röd text. Och sub är markerad.

Länk till kommentar
Dela på andra webbplatser

Gul med pil - innebär att exekvering är på denna rad.

Om du trycker F8 stegar du vidare på nästa rad.

 

Debug av denna modell fungerar när man kör kod i öppen bok. Om problemen finns enbart när man öppnar boken då måste man ta till mer primitiva metoder som debug.print. Denna senare, det enda den gör är skriver ut text i direktfönstrer i VBA-editorn. Tanken är, om man strösslar ut dessa i koden där man tror det finns problem kan man se i direktfönstret vilka rader som körts, vilken debug.print som är den sista som skrivits ut.

 

MEN nu inser jag en sak. Koden använder ju WinHTTP. Finns den referensen satt i din bok?

Länk till kommentar
Dela på andra webbplatser


Sub HTMLGet()
    Debug.Print
    Dim strUrl As String
    Debug.Print
    strUrl = "http://www.football-data.co.uk/mmz4281/1314/E0.csv"
    Dim objHTTP As WinHttpRequest
    Debug.Print
    Set objHTTP = New WinHttp.WinHttpRequest
    objHTTP.Open "GET", strUrl, False
    objHTTP.Send
    MySep objHTTP.responsetext
    Set objHTTP = Nothing

Är det så här det ska se ut med debug.Print i koden?

 

Har försökt att stega mig fram, och då kommer en ruta fram som säger (Kompilieringsfel: Förväntas: uttryck) och trycker jag på ok då hoppar det här fram.

Privet sub Workbook_open()
LoopThroughDirectory
End Sub

Private Sub Workbook_Open()

End Sub

Kollar jag i projektutforskaren då är ThisWorkbook markerad.

 

 

Hur kommer det sig att jag kunde köra makron manuellt och när jag provade ändringen och efter den fungerar den inte manuellt.

Jag kopierade koden och sparade den så jag kunde lägga tillbaka den om det blev fel.

Länk till kommentar
Dela på andra webbplatser

Hmm började om från början och öppnade ny arbetsbok och kopierade koden från inlägg #6. 

 

Och körde makron manuellt och vips fungerar.

Spara som makro osv och startar om arbetsboken och allt finns där, men hur vet jag om makron körs automatiskt?

Länk till kommentar
Dela på andra webbplatser

Debug-print

 

tanken var ju att du lägga in någon text så att man identifiera vilken rad som körts.

 

Kolla inställningarna i Excel apropå om makron körs automatiskt. Excel varnar vanligen annars för makron. 

 

Senaste versionerna av Excel minns dock numera om man godkänt makron i en bok en gång, då godkänns de alltid.

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...