1. W jaki sposób napisać dodatek do Excela w VBA?
Tworzenie prostego dodatku w VBA Excel polega przede wszystkim na napisaniu dobrego kodu makr VBA. W tym rozdziale dowiesz się w jaki sposób zainstalować takie makro jako dodatek Excela. Dodatek będzie składał się z dwóch makr:
- Makro 1 – otwierające okno zapisu pliku i wstawiające bieżącą datę w nazwę pliku
- Makro 2 – generujące przykładową tabelę danych z rozdziału o pętli Do Loop VBA
Poniżej okno z gotowymi kodami obydwu makr. Skopiuj je do modułu w nowym pliku Excela. Całość zapisz jako Dodatek programu Excel ( .xlam ). Podczas zapisu do xlam automatycznie powinien podpowiedzieć Ci się folder do przechowywania dodatków Excela. Najczęściej jest w tej lokalizacji: C:\Users\TWÓJ_LOGIN\AppData\Roaming\Microsoft\Dodatki. Nazwę dodatku ustalmy jako moj_dodatek.xlam.
'tomaszkenig.pl
Sub SaveAsWithDate()
Dim strFilename As String
strFilename = ActiveWorkbook.Name
Application.Dialogs(xlDialogSaveAs).Show Format(Date, "yyyymmdd") & "_" & strFilename
End Sub
Sub GenerujDane()
Dim intCounter As Integer
Dim intColumn As Integer
Dim intRow As Integer
'wstawiamy nagłówki kolumn
Cells(1, 1) = "Liczba porządkowa"
Cells(1, 2) = "Numer indeksu"
Cells(1, 3) = "Data egzaminu"
Cells(1, 4) = "Wynik egzaminu"
Cells(1, 5) = "Ocena słowna"
'wypełniamy kolumnę Liczba porządkowa liczbami od 1 do 30
intCounter = 1
Do While intCounter <= 30
Cells(intRow + 2, 1) = intCounter
intCounter = intCounter + 1
intRow = intRow + 1
Loop
'wypełniamy kolumnę numer indeksu
intCounter = 1 'do licznika przypisujemy wartość 1
intRow = 0 'do licznika wierszy przypisujemy wartość początkową
Do While intCounter <= 30
Cells(intRow + 2, 2) = Int(90000 + Rnd() * 10000) 'Całkowita liczba losowa od 90kdo 100k
intCounter = intCounter + 1
intRow = intRow + 1
Loop
'wypełniamy kolumnę data egzaminu
intCounter = 1 'do licznika przypisujemy wartość 1
intRow = 0 'do licznika wierszy przypisujemy wartość początkową
Do While intCounter <= 30
Cells(intRow + 2, 3) = Date - 10 ' wstawiamy datę w 3 kolumnę
intCounter = intCounter + 1
intRow = intRow + 1
Loop
'wypełniamy kolumnę wynik egzaminu
intCounter = 1 'do licznika przypisujemy wartość 1
intRow = 0 'do licznika wierszy przypisujemy wartość początkową
Do While intCounter <= 30
Cells(intRow + 2, 4) = Int(Rnd() * 100) 'mnożymy liczbę losową przez 100 i zaokrąglamy
intCounter = intCounter + 1
intRow = intRow + 1
Loop
'wypełniamy ocenę słowną
Dim StrResult As String 'wstawiamy zmienną reprezentującą oceną słowną
intCounter = 1 'do licznika przypisujemy wartość 1
intRow = 0 'do licznika wierszy przypisujemy wartość początkową
Do While intCounter <= 30
'instrukcja warunkowa przypisuje wynik słowny na podstawie pkt. z kolumny Wynik
If Cells(intRow + 2, 4) <= 33 Then
StrResult = "Poprawka"
ElseIf Cells(intRow + 2, 4) > 33 And Cells(intRow + 2, 4) <= 67 Then
StrResult = "Zdał"
ElseIf Cells(intRow + 2, 4) > 67 Then
StrResult = "Zdał z wyróżnieniem"
End If
Cells(intRow + 2, 5) = StrResult
intCounter = intCounter + 1
intRow = intRow + 1
Loop
End Sub
2. Instalacja własnego dodatku VBA do Excel
By zainstalować własny dodatek do Excela, wejdź w kartę Developer. Pod ikoną Dodatki programu Excel możesz wybrać swój dodatek jak na poniższym screenie. Zaznacz Moj_dodatek i kliknij OK.

Dodatki VBA Excel w zakładkach instalujemy w menu Excel. Wchodzimy w Plik > Opcje > Dostosowywanie wstążki. Teraz powinniśmy zrobić następujące rzeczy:
- Z lewej strony ustaw „Wybór polecenia z” na Makra
- Z prawej strony stwórz nową kartę i automatycznie nową grupę
- Przenieś z lewej strony swoje 2 makra do nowej grupy po prawej stronie
- Po prawej stronie zmień nazwy swoich makr klikając prawy przycisk > Zmień nazwę.
- Zmieniając nazwę ustal ikony dla swoich makr
- Zmień także nazwy dla grupy i karty na bardziej przyjazne
- Przesuń swój dodatek w dół zakładek, by wyświetlał się na końcu kart
- Gotowe !!!

Teraz możesz już korzystać ze swoich własnych dodatków Excel.

Artykuł jest częścią kursu vba Excel. Całość kursu vba online zamieszczam w tym dziale. Artykuł został napisany po zapytaniu czytelnika w temacie pisania dodatków. Jeśli masz podobne pytania co do vba, baz SQL Server i Oracle zachęcam do kontaktu. Możesz też zadać mi pytanie na forum bez logowania. Link do pliku dodatku zamieszczam poniżej: