sobota, 2 maja 2009

Masowy import danych z Excel-a

Majówka w pełni :) Korzystając z chwili wolnego czasu napisałem klasę masowo importującą wiele identycznych arkuszy w jedną spójną całość. Wbrew pozorom nie jest to takie łatwe zadanie :( ale po kilku godzinach walki udało mi się stworzyć coś takiego klasa C_MASS_IMPORT
Przykład wykorzystania jest poniżej:
Sub work()
Dim im As New C_MASS_IMPORT

im.BaseFile = "C:\Users\Orzemek\Documents\Report_file.mdb"
im.ImportFromFile "C:\Users\Orzemek\Documents\Report1.XLS", False, Array("Sheet2", "Sheet3", "Sheet4")
im.ImportFromFile "C:\Users\Orzemek\Documents\Report1.XLS", True

' tworzenie QueryTable
im.CreateQt Sheet1.Range("A1"), , "wynik scalenia"


' Tworzenie Pivot-a
im.CreatePv Sheet2.Range("A1"), , "wynik scalenia"

End Sub

Zasada działania jest prosta: wskazujemy plik roboczy MDB, jak go nie ma to zostanie stworzony.
Kolejnym krokiem jest import zakładek z pliku, jak nie wskażemy konkretnych to mechanizm będzie chciał importować wszystkie naraz. Parametr true / False widoczny w przykładzie sprawia że dane nie zostaną (true) lub nie zostaną (False) nadpisane
Ostatni krok to stworzenie obiektu QueryTable w wybranym arkuszu, fajne, lecz niekonieczne

Edit:
Dodałem możliwość łatwego tworzenia pivot-a z tabeli będącej wynikiem scalenia
Poprawiłem też link - jest do nowszej wersji

2 komentarze:

  1. CookieMonssster24 maja 2012 11:55

    Witam! Mam pytanie. Próbuje zrobić aplikacje przepisującą dane z pliku excela (.xlsx) do accessa i mam kłopot ze słowami kluczowymi Excel.Application, Excel.Workbook, Excel.Worksheet itp. Pojawia mi się informacja "User-defined type not defined" . Jakieś pomysły co z tym zrobić? korzystam z Office 2007-2010

    OdpowiedzUsuń
  2. na początek dodał bym referencję Excela do projektu w Accessie

    OdpowiedzUsuń