Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[vba] Tworzenie raportu z wczesniej przygotowanej bazy danyc

krzychuka 26 Paź 2010 10:46 1706 1
  • #1 26 Paź 2010 10:46
    krzychuka
    Poziom 1  

    Witam,
    jestem początkującym programistą i proszę o pomoc przy przygotowaniu bazy danych.
    Mam sporządzony arkusz "Baza danych" zawierający wszystkie niezbędne dane. Drugi arkusz "Raport" prezentować powinien wybrane dane zaciągnięte z tego pierwszego. Sęk w tym że raport ten ma dawać możliwość wyboru pewnych właściwości na podstawie, których będzie generowany raport.
    Proszę o możliwie szybką pomoc. wiem że opis problemu jest zbyt niedokładny więc będę na bieżąco odpisywać na posty :)

    0 1
  • #2 26 Paź 2010 13:50
    marcinj12
    Poziom 40  

    Masz (przynajmniej) dwie możliwości, zakładając że nie chcesz robić bazy np. w Accessie:
    - możesz potraktować arkusz "Baza danych" jako źródło dla kwerendy lub zapytania ADO (Excel może się połączyć "sam ze sobą"), coś w tylu:

    Code:

                Set conn = New ADODB.Connection
                conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
               
                Sql = "SELECT * FROM `Arkusz1$` WHERE [nazwisko] IN (" & lista_nazwisk & ")"
                Set rst = New ADODB.Recordset
                rst.Open Sql, conn, adOpenForwardOnly
               
                ThisWorkbook.Worksheets("Raport").Range("A2").CopyFromRecordset rst
               
                rst.Close
                Set rst = Nothing
               
                conn.Close
                Set conn = Nothing

    Musisz tylko pamiętać o włączeniu referencji do biblioteki Microsoft ActiveX DataObject 2.8 Library (zresztą, wygooglasz jak będziesz potrzebował...) i stosowaniu poprawnych zapytać SQL, z nazwą arkusza zakończoną $.

    - albo możesz "dłubać" w VBA, np. stosując autofiltr (jakiś czas temu robiłem taką "uniwersalną" bazę - mozesz podejrzeć przykład z załącznika).

    0