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: