Akademia VBA

czyli jak uzyskać władzę nad światem … danych

Usuwanie duplikatów

Kategorie: Excel VBA,Office 2007,Office 2010 — Dariusz Kolasa o 22:13, 27 Mar 2013

Jedną z nowości w Excelu 2007/2010 jest narzędzie do usuwania duplikatów. Bardzo przydatne np do tworzenia słowników. We wcześniejszych wersjach ten efekt można było osiągnąć za pomocą opcji filtra zaawansowanego, co nie było bardzo proste i mało kto o tym wiedział. Nowego narzędzia Usuń duplikaty da się też użyć z poziomu kodu, np:

'---
ActiveSheet.UsedRange.Columns(10).RemoveDuplicates Columns:=1, Header:=xlYes
'---

Generowanie Tabel Przestawnych – Excel 2007/2010

Kategorie: Excel VBA,Office 2007,Office 2010,Problemy z Office — Dariusz Kolasa o 10:37, 6 Kwi 2012

Generując tabelę przestawną z poziomu kodu pod Excelem 2003 można było jako argumentu Source metody tworzącej PivotCache podać dowolny poprawnie zdefiniowany obiekt Range, np CurrentRegion lub UsedRange. Podobnie rzecz ma się pod Excelem 2007/2010 (pamiętajmy tylko o użyciu metody PivotCaches.Create zamiast PivotCaches.Add). Niestety okazuje się, że w momencie gdy obiekt Range ma liczbę wierszy przekraczającą 65 536 (co teoretycznie nie powinno być problemem pod Excelem 2007/2010) metoda generuje błąd nr 13 Type mismatch :( Rozwiązaniem (niezbyt eleganckim ale innego chyba nie ma) tego problemu jest użycie zamiast obiektu Range klasycznego stringa R1C1 z tymże zakresem:

    Dim OstW As Long
    Dim OstK As Long
    Dim strZakres As String
    Dim PC as PivotCache
 
    OstW = Cells(ArkDane.Rows.Count, 1).End(xlUp).Row
    OstK = Cells(1, ArkDane.Columns.Count).End(xlToLeft).Column
    strZakres = "R1C1:R" & OstW & "C" & OstK
    Set PC = ActiveWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=strZakres, _
        Version:=xlPivotTableVersion14)

Przy okazji możemy zapoznać się z powszechnie znanymi wyrażeniami zwracającym nr ostatniego wiersza i ostatniej kolumny w zakresie danych

Przykład bazuje na stronie z MS Answers: http://answers.microsoft.com/en-us/office/forum/office_2010-customize/pivotcache-type-mismatch-error-when-65536-rows/0827889e-b671-e011-8dfc-68b599b31bf5?msgId=4e3a2b20-7a72-e011-8dfc-68b599b31bf5

Jak zabezpieczyć kod w Access 2010

Kategorie: Access 2010,Access VBA,Office 2010 — Dariusz Kolasa o 23:59, 2 Lut 2012

Kiedyś było w menu Narzędzia bazy danych – Utwórz plik mde. W Accessie 2010 jest w Plik – Zapisz i publikuj – Utwórz plik ACCDE. Jedno i drugie powoduje wyprodukowanie pliku z usuniętym kodem źródłowym i z blokadą projektów formularzy i raportów. Nie blokuje dostępu do projektów kwerend i tabel. Proszę zauważyć, że nikt łącznie z autorem nie ma już w tym pliku możliwości modyfikacji kodu lub projektu formularza czy raportu! Trzeba koniecznie zachować oryginał accdb!

Access 2010 zawiesza się przy otwieraniu tabeli na niektórych laptopach HP

Kategorie: Office 2010,Problemy z Office — Dariusz Kolasa o 21:36, 11 Cze 2011

Już psy wieszałem na Access-ie 2010 bo właśnie mnie to spotkało. A tu okazało się, że to wina najnowszych, niedopracowanych, biometrycznych metod zabezpieczeń. Dzięki Pani Kathy S z Microsoft, której post rozwiązał mój problem, ostatnio trochę mniej się denerwuję…

link do rozwiązania

Co się stało z DAO w Access 2007/2010?

Kategorie: Access VBA,Office 2007,Office 2010 — Dariusz Kolasa o 21:17, 11 Cze 2011

Otóż zostało ono wbudowane w bibliotekę Accessa 2007/2010! Nie wiem po co ale tak właśnie się stało. nawet nie próbuj ustawiać referencji do klasycznego DAO 3.6, nie da się włączyć. Wywala komunikat o konflikcie. Na szczęście nie trzeba tego robić, po prostu biblioteka DAO jest dostępna bez tego, co widać w kodzie na liście IntelliSense.

Jak zacząć programowanie w VBA w Excelu 2010?

Kategorie: Excel VBA,Office 2010,Podstawy VBA — Dariusz Kolasa o 21:43, 9 Cze 2011

Trzeba zacząć od dodania do Wstążki karty Deweloper. W tym celu trzeba użyć karty Plik, zastępującej dziwaczny, okrągły Przycisk Office z wersji 2007. Karta Plik, zwana też dla zmylenia przeciwnika widokiem Backstage, pozwala oczywiście zarządzać plikiem (zapisywanie, drukowanie, właściwości itp.). Znajdziemy tu także opcje Excela. I właśnie te opcje nas teraz interesują.
Po wejściu w Opcje wybieramy Dostosowywanie Wstążki i zaptaszamy wybór karty Deweloper. Po zatwierdzeniu możemy obejrzeć nowo dodaną kartę, a na niej stare dobre przyciski ze starego dobrego paska Visual Basic (i komu on przeszkadzał?).

Tu przede wszystkim interesujemy się Bezpieczeństwem Makr, które w zdecydowanej większości przypadków powinniśmy zostawić w domyślnej opcji – Wyłącz wszystkie makra i wyświetl powiadomienie (dawny średni poziom zabezpieczeń). Pozwoli nam to na podjęcie decyzji czy włączyć makra po otwarciu pliku je zawierającego. Nawiasem mówiąc Microsoft znowu prawdopodobnie dla zmylenia przeciwnika, pozwala na podjęcie tej decyzji bądź to w wielkim oknie dialogowym, bądź to w komunikacie w formie nierzucającego się w oczy paska pojawiającego się nieśmiało nad nagłówkami kolumn.

Kolejny ruch to zapisanie pliku jako Skoroszyt programu Excel z obsługą makr, bo tylko w takim typie pliku możemy zapisać kod pod Excelem 2007/2010. I to z grubsza tyle, możemy sobie teraz nagrać i poedytować jakieś makro, czyli procedurę publiczną VBA. Możemy też napisać jakąś własną funkcję publiczną i używać jej jak funkcji wbudowanej Excela. Co bardziej ambitni mogą oprogramować zdarzenia skoroszytu czy arkusza a najbardziej wytrwali mogą nawet zaprojektować i oprogramować własny formularz. Powodzenia!
Jeszcze jedna uwaga. Gdyby przyszło nam do głowy rozpowszechniać kod w postaci szablonu musimy pamiętać aby zapisać plik jako Szablon programu Excel z obsługą makr