Sub import_csv()

Dim rok As Integer ' Pro stažení potřebujeme aktuální rok
Dim mesic As Integer ' A měsíc
Dim den As Integer ' A den

rok = Year(Now()) ' Do proměnné rok ukládáme číslo roku
mesic = Month(Now()) ' Do proměnné měsíc ukládáme číslo měsíce
den = Day(Now()) ' Do proměnné den vkládáme číslo dne

    ChDir "D:\"
    Workbooks.Open Filename:="D:\" & rok & "-" & mesic & "-" & den & ".csv"
    Columns("A:A").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        )), TrailingMinusNumbers:=True
    ActiveWindow.SmallScroll Down:=0
    Range("F3:L23").Select
    Selection.Style = "Currency"
End Sub

Typickou první lekcí v každém jazyce je zobrazení textového výsupu s výstižným textem: Ahoj světe.

Takže tady to uděláme stejně.

MsgBox "Ahoj světe"

A spustíme makro. MsgBox je příkaz pro vytvoření vyskakovacího dialogu a hodnota v uvozovkách je pak to, co se má uživateli zobrazit.

Public Sub stahni_soubor() ' Název procedury

Dim webovka As String ' Definujeme proměnnou "webovka" - uložíme do ní adresu zdroje csv souboru
Dim slozka As String ' Definujeme umístění souboru


Dim rok As Integer ' Pro stažení potřebujeme aktuální rok
Dim mesic As Integer ' A měsíc
Dim den As Integer ' A den

Dim stahni_soubor As Object ' Definujeme proměnnou, kterou použijeme na stažení dokumentu

 

rok = Year(Now()) ' Do proměnné rok ukládáme číslo roku
mesic = Month(Now()) ' Do proměnné měsíc ukládáme číslo měsíce
den = Day(Now()) ' Do proměnné den vkládáme číslo dne

umisteni = "H:\" & rok & "-" & mesic & "-" & den & ".csv"

' Proměnné webovka přiřazujeme adresu, za pomoci znaku & spojujeme nemmý text adresy a proměnné s částmi datumu - stáheme vždy aktuální soubor
webovka = "http://www.csas.cz/banka/portlets/exchangerates/current.do?csv=1&times=&event=current&day=" & den & "&month=" & mesic & "&year=" & rok

' Vlastní stažení souboru
Set stahni_soubor = CreateObject("Microsoft.XMLHTTP") ' Vytváříme objekt, který následně stáhne soubor dle zadání
stahni_soubor.Open "GET", webovka, False ' Instrukce pro stažení souboru - vytvoření požadavku
stahni_soubor.send ' Poslání požadavku na stažení

' Vlastní stažení
webovka = stahni_soubor.responseBody
If stahni_soubor.Status = 200 Then
    Set oStream = CreateObject("ADODB.Stream")
    oStream.Open
    oStream.Type = 1
    oStream.Write stahni_soubor.responseBody
    oStream.SaveToFile umisteni, 2 ' 1 = no overwrite, 2 = overwrite
    oStream.Close
End If
End Sub

VBA

Visual Basic for Application (VBA) je programovací jazyk odvozený od jazyka Visual Basic (VB). VBA je upraveno tak, aby vyhovovalo prostředí Microsoft Office. Zároveň je v aplikacích doplněn o vývojové prostředí. To pomáhá s tvorbou programů. Z prostředí VBA lze přistupovat k funkcím operačního systému Microsoft Windows. Na druhou stranu, vytvořený kód nemůže fungovat mimo prostředí Microsoft Office.

Po spuštění je napsaný kód přeložen do proprietárního formátu P-code, následně je uložen do souboru xslx, docx, ... Kód je pak proveden na virtuálním stroji.

Další vlastností VBA je to, že kód není možné automaticky používat ve všech aplikacích Microsoft Office. Pokud je kód vázán na prostředí MS Excel, nelze jej spustit v aplikaci MS Word, MS Powerpoint, MS Access, ... .

VBA lze zneužít k tvorbě škodlivého kódu. V případě využívání hotových souborů z internetu nebo nedůvěryhodných zdrojů je nutné být velmi opatrný.

Využití

Přes nevýhodu počáteční časové investice je VBA super nástroj na automatizace činností. Je to tehdy, pokud je některé úkony v Excelu opakují často. Například stáhnutí  souborů s aktuálními kurzy a následné zpracování získaných údajů. Ke zpracování můžeme přistoupit třemi způsoby:

psaní kódu,

nahrávání činnosti,

kombinace obou výše uvedených.

Výhodou je pak rychlost provedení naprogramovaných úkonů. Ty se provedou ihned.

Prvním pokusem může být vytvoření vlastní funkce dostupné pak ve výpočtech v rámci MS Excel.

V prostředí VBA editoru přidáme nový modul.

Kód pak může být následující:

Function pytagoras(a,b)

pytagoras = sqr(a*a+b*b)

End Function

V MS Excel pak můžeme vložit "normálně" vzoreček - =pytagoras(a,b) - kde a nebo b je číslo nebo odkaz na buňku.