Zadania związane z VBA – Excel

'Zmianna globalna
Public x As integer
'Stała globalna
Public Const y = 10
 
 
'Tablice
	Dim tablica(10) As Integer
	For i=0 to 9 Step 1
   		MsgBox("Element " & i & " wartość " & tablica(i))
	Next i

Ćwiczenia w VB
Ćwiczenia w VB (prostsze)

Odczyt z pliku w VBA

Sub odczytZPliku()
'
' Przykładowe makro związane z odczytem danych z plików i odwołaniami w MS Excel
'
    Range("A1") = "Komórka A1" 'Odwołanie do konkretnej komórki
    Dim s As String
 
    Dim i As Integer
    i = 1
 
    Open "test.txt" For Input As #1
    Do While Not EOF(1)
        Input #1, linia
        Cells(i, 3) = linia
        i = i + 1
        s = s + linia + Chr(10) + Chr(13)
    Loop
    MsgBox s
 
    Close #1
End Sub

Zapis do pliku w VBA

Sub zapisDoPliku()
'
' Przykładowe makro związane z zapisem danych do plików
'

    Open "test.txt" For Output As #1
    For i = 1 To 10 Step 1
        Print #1, Cells(i, 1) 'Gdzie '1' oznacza kolumnę 'A', natomiast zmienna 'i' określa numer wiersza
    Next i
 
    Close #1
End Sub

Podstawowe operacje na łańcuchach znaków

Sub lancuchy()
'
' Przykładowe makro związane odczytem danych plików i odwołaniami w MS Excel
'
    Dim s As String
    s = "Ala ma kota" 'Łańcuchy liczymy od '1'
    
    MsgBox Left(s, 3) 'Wyświetli trzy pierwsze znaki: "Ala"
    MsgBox Right(s, 3) 'Wyświetli trzy ostatnie znaki: "ota"
    MsgBox Mid(s, 8, 3) 'Wyświetli trzy znaki, zaczynając od ósmego: "kot"
    
    MsgBox Len(s) 'Wyświetli długość łańcucha
    
    MsgBox LCase(s) 'Wyświetli łańcuch, w którym wszystkie litery zmienione zostały na małe
    MsgBox UCase(s) 'Wyświetli łańcuch, w którym wszystkie litery zmienione zostały na wielkie
    
    MsgBox InStr(s, "ma") 'Wyświetli pozycję łańcucha "ma" w łańcuchu s
    MsgBox InStr(s, "Ola") 'Wyświetli 0, bo nie znalazł łańcucha "Ola" w łańcuchu s
    
    MsgBox InStr(7, s, "a") 'Wyświetli pozycję łańcucha "a" w łańcuchu s, zaczynając od pozycji 7

    MsgBox Asc("a") 'Wyświetli pozycję znaku 'a' w tabeli kodów ASCII
    MsgBox Chr(65) 'Wyświetli znak będący na 65-tej pozycji w tabeli kodów ASCII

    s = "      Ala ma kota      "
 
    MsgBox ">>" & Trim(s) & "<<" 'Wycięcie białych znaków po obydwóch stronach
    MsgBox ">>" & LTrim(s) & "<<" 'Wycięcie białych znaków po lewej stronie
    MsgBox ">>" & RTrim(s) & "<<" 'Wycięcie białych znaków po prawej stronie
End Sub

Odczyt z pliku znak po znaku

Sub odczytZnakPoZnaku()
'
' Przykładowe makro związane z odczytem danych z plików, znak po znaku w MS Excel
'
    Range("A1") = "Komórka A1" 'Odwołanie do konkretnej komórki
    Dim s As String
 
    Dim i As Integer
    wiersz = 1
 
    Open "test.txt" For Input As #1
    Do While Not EOF(1)
        Input #1, linia
        For i = 1 To Len(linia) Step 1
            Cells(wiersz, 1) = Mid(linia, i, 1)
            wiersz = wiersz + 1
        Next i
    Loop
 
    Close #1
End Sub

Suma cyfr w łańcuchu znaków

Sub sumaCyfr()
'
' Przykładowe makro związane obliczeniem sumy cyfr w łańcuchu znaków (MS Excel)
'
    Dim s As String
    Dim s2 As String
    s = "Ala ma 15 kotów i 2 psy" 'Łańcuchy liczymy od '1'
    Dim suma As Integer
    For i = 1 To Len(s) Step 1
        If Mid(s, i, 1) >= "0" And Mid(s, i, 1) <= "9" Then
            suma = suma + Mid(s, i, 1)
        End If
    Next i
    MsgBox "Suma cyfr w łańcuchu wynosi " & suma
End Sub

Zadania do wykonania

1. Palindrom
2. Szyfr Cezara
3. Zamiana liczby z dziesiętnej na binarną (z linii pliku do komórek)
4. Liczenie liczby wszystkich fraz w pliku lub liczby wszystkich fraz w komórkach.
5. Podział danych z pliku na komórki w Excelu, według białych znaków
6. Przepisanie z pliku tylko liczb do komórek Excela
7. Zamiana małych liter na wielkie i wielkich na małe
8. i inne

Parsowanie XML:
XML
XML2
NBP