Przykładowy program ExcelADO pokazuje, jak odczytywać i zapisywać dane w skoroszytach programu Excel przy użyciu modelu obiektów ADO

Tłumaczenia artykułów Tłumaczenia artykułów
Numer ID artykułu: 278973 - Zobacz jakich produktów dotyczą zawarte w tym artykule porady.
Rozwiń wszystko | Zwiń wszystko

Streszczenie

Przykładowy program ExcelADO.exe pokazuje, jak można używać modelu obiektów ADO (ActiveX Data Objects) z dostawcą Microsoft Jet OLE DB 4.0 do odczytywania i zapisywania danych w skoroszytach programu Microsoft Excel.

Więcej informacji

Następujący plik jest dostępny do pobrania w witrynie Microsoft Download Center:
ExcelADO.exe
Data wydania: 12 grudnia 2000

Aby uzyskać dodatkowe informacje dotyczące sposobu pobierania plików Pomocy technicznej firmy Microsoft, kliknij następujący numer artykułu w celu wyświetlenia tego artykułu z bazy wiedzy Microsoft Knowledge Base:
119591 Jak uzyskać pliki Pomocy technicznej Microsoft w usługach online
Firma Microsoft przeskanowała ten plik w poszukiwaniu wirusów. Firma Microsoft użyła najnowszego oprogramowania do wykrywania wirusów dostępnego w chwili opublikowania pliku. Plik jest przechowywany na serwerach o podwyższonym stopniu bezpieczeństwa, co uniemożliwia nieautoryzowane zmiany w pliku.

Dlaczego warto korzystać z modelu obiektów ADO?

Używanie modelu obiektów ADO w celu przesyłania danych do skoroszytu programu Excel i pobierania ich z niego zapewnia deweloperowi kilka korzyści w stosunku do korzystania z automatyzacji programu Excel:
  • Wydajność. Program Microsoft Excel jest pozaprocesowym serwerem ActiveX. Model obiektów ADO działa wewnątrz procesu i nie wymagają kosztownych wywołań pozaprocesowych.
  • Skalowalność. W przypadku aplikacji sieci Web nie zawsze jest pożądana automatyzacja programu Microsoft Excel. Model obiektów ADO zapewnia bardziej skalowalne rozwiązanie posługiwania się danymi w skoroszycie.
Model obiektów ADO może być używany wyłącznie do przesyłania nieprzetworzonych danych do skoroszytu. Nie można go używać w celu zastosowania formatów lub formuł do komórek. Można jednak przesyłać dane do skoroszytu, który jest sformatowany — wówczas format jest zachowywany. Jeśli po wstawieniu danych jest wymagane formatowanie „warunkowe”, można je określić za pomocą automatyzacji lub makra w skoroszycie.

Charakterystyka dostawcy Jet OLE DB Provider dla skoroszytów programu Excel

Aparat bazy danych Microsoft Jet może być używany w celu uzyskania dostępu do danych w bazach danych o innych formatach plików, takich jak skoroszyty programu Excel, za pośrednictwem instalowalnych sterowników ISAM (Indexed Sequential Access Method). Aby otworzyć format zewnętrzny obsługiwany przez dostawcę Microsoft Jet 4.0 OLE DB, należy określić typ bazy danych we właściwościach rozszerzonych połączenia. W przypadku skoroszytów programu Microsoft Excel dostawca Jet OLE DB obsługuje bazy danych następujących typów:
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
UWAGA: W przypadku skoroszytów programu Microsoft Excel w wersjach 5.0 i 7.0 (95) należy używać typu źródłowej bazy danych Excel 5.0, a w przypadku skoroszytów programu Microsoft Excel w wersjach 8.0 (97) i 9.0 (2000) — źródłowej bazy danych Excel 8.0. W przykładowym programie ExcelADO.exe są używane skoroszyty programu Excel w formatach Excel 97 i Excel 2000.

Następujące przykłady ilustrują połączenie modelu obiektów ADO ze skoroszytem programu Excel 97 (lub 2000):
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Skoroszyt1.xls"
    '....
    .Close
End With
				
—lub—
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Skoroszyt1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				
Konwencje nazewnictwa tabel

Jest kilka sposobów odwoływania się do tabeli (lub zakresu) w skoroszycie programu Excel:
  • Można użyć nazwy arkusza z następującym po niej znakiem dolara (na przykład [Arkusz1$] lub [Mój arkusz$]). Tabela skoroszytu, do której następuje odwołanie w taki sposób, składa się z całego wykorzystanego zakresu arkusza.
    oRS.Open "Select * from [Arkusz1$]", oConn, adOpenStatic
    					
  • Można użyć zakresu o określonej nazwie (na przykład [Tabela1]).
    oRS.Open "Select * from Tabela1", oConn, adOpenStatic
    					
  • Można użyć zakresu o określonym adresie (na przykład [Arkusz1$A1:B10]).
    oRS.Open "Select * from [Arkusz1$A1:B10]", oConn, adOpenStatic
    					
Nagłówki tabel

W skoroszytach programu Excel pierwszy wiersz w zakresie jest domyślnie uważany za wiersz nagłówków (lub nazw pól). Jeśli pierwszy wiersz nie zawiera nagłówków, można określić wartość HDR=NO we właściwościach rozszerzonych ciągu połączenia. Jeśli pierwszy wiersz nie zawiera nagłówków, dostawca baz danych OLE automatycznie nadaje nazwy polom (P1 pierwszemu polu, P2 drugiemu itd.).

Typy danych

W tym przypadku, w odróżnieniu od tradycyjnej bazy danych, nie ma bezpośredniego sposobu określenia typów danych dla kolumn w tabelach programu Excel. W zamian dostawca baz danych OLE skanuje ograniczoną liczbę wierszy w kolumnie, aby „odgadnąć”, jaki jest typ danych pola. Domyślna liczba skanowanych wierszy wynosi 8, ale można ją zmienić, wybierając wartość z zakresu od 1 do 16 dla ustawienia MAXSCANROWS we właściwościach rozszerzonych ciągu połączenia.

Pliki uwzględnione w programie przykładowym

Plik ExcelADO.exe zawiera projekt Visual Basic Standard EXE, strony ASP (Active Server Page), skoroszyty programów Excel 97 i Excel 2000 działające jako szablony oraz bazę danych programu Microsoft Access 2000. Oto konkretne pliki:

Pliki projektu Visual Basic Standard EXE
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Strony ASP
  • EmpData.asp
  • Orders.asp
Skoroszyty programu Microsoft Excel
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Baza danych programu Microsoft Access
  • Data.mdb

Jako korzystać z programu przykładowego

Wyodrębnij zawartość pliku exe do folderu.

Aby użyć projektu Visual Basic:
  1. W programie Visual Basic otwórz plik ExcelADO.vbp.
  2. W menu Project (Projekt) wybierz polecenie References (Odwołania), a następnie ustaw odwołania do bibliotek Microsoft ADO Ext. for DDL and Security i Microsoft ActiveX Data Objects Library. Ten kod przykładowy działa zarówno z modelem obiektów ADO 2.5, jak i z modelem ADO 2.6, należy więc wybrać wersję właściwą dla danego komputera.
  3. Naciśnij klawisz F5, aby uruchomić program. Zostanie wyświetlony formularz prezentacji.
  4. Kliknij przycisk Sample 1. Ten przykład tworzy kopię pliku OrdersTemplate.xls. Następnie używa modelu obiektów ADO w celu ustanowienia połączenia ze skoroszytem i otwiera zestaw rekordów Recordset w tabeli, która jest zdefiniowanym zakresem w skoroszycie. Nazwa tego zakresu to Orders_Table. Metody ADO AddNew/Update są używane w celu dodania rekordów (czyli wierszy) do zdefiniowanego zakresu w skoroszycie. Po dodaniu wierszy połączenie ADO Connection zostaje zamknięte i skoroszyt zostaje wyświetlony w programie Microsoft Excel. W tym celu należy wykonać następujące kroki:
    1. W menu Wstaw w programie Excel wybierz polecenie Nazwa, a następnie wybierz polecenie Definiuj.
    2. Na liście zdefiniowanych nazw zaznacz pozycję Orders_Table. Należy zauważyć, że zdefiniowana nazwa rozszerzyła się o nowo dodane rekordy. Jest ona używana, w połączeniu z funkcją PRZESUNIĘCIE programu Excel, do obliczenia sumy danych dodanych do skoroszytu.
    3. Zamknij program Microsoft Excel i powróć do aplikacji Visual Basic.
  5. Kliknij przycisk Sample 2. Ten przykład tworzy kopię pliku EmpDataTemplate.xls. Używa modelu obiektów ADO w celu ustanowienia połączenia ze skoroszytem i używa metody Execute połączenia ADO w celu wstawienia danych (INSERT INTO w języku SQL) do skoroszytu. Dane są dodawane do zdefiniowanych zakresów (czyli tabel) w skoroszycie. Po przesłaniu danych połączenie zostaje zamknięte i wynikowy skoroszyt zostaje wyświetlony w programie Excel. Przejrzyj skoroszyt, zamknij program Microsoft Excel i powróć do aplikacji Visual Basic.

  6. Kliknij przycisk Sample 3. Ten przykład tworzy kopię pliku ProductsTemplate.xls. Używa rozszerzeń Microsoft ADO Extensions 2.1 dla biblioteki obiektów DDL and Security Oobject Library (ADOX) w celu dodania nowej tabeli (lub nowego arkusza) do skoroszytu. Następnie uzyskany dla nowej tabeli zestaw rekordów ADO Recordset i dane są dodawane przy użyciu metod AddNew/Update. Po dodaniu wierszy połączenie ADO Connection zostaje zamknięte i skoroszyt zostaje wyświetlony w programie Excel. Skoroszyt zawiera kod makra VBA (Visual Basic for Applications) w zdarzeniu Open dla skoroszytu. Makro to jest uruchamiane w momencie otwarcia skoroszytu; jeśli w skoroszycie istnieje nowy arkusz „Products”, kod makra formatuje skoroszyt, a następnie ten kod zostaje usunięty. Ta technika przedstawia deweloperom sieci Web sposób przenoszenia kodu formatującego z serwera sieci Web na klienta. Aplikacja sieci Web mogłaby przesłać strumieniowo sformatowany skoroszyt zawierający dane do klienta i pozwolić makru na zastosowanie wszelkiego formatowania „warunkowego”, które mogłoby nie być możliwe w samym szablonie przeznaczonym do uruchomienia na kliencie.

    UWAGA: Aby przejrzeć kod makra, wyświetl moduł ThisWorkbook w projekcie VBAProject dla pliku ProductsTemplate.xls.

  7. Kliknij przycisk Sample 4. Ten przykład daje takie same wyniki jak przykład 1, ale technika używana do przesłania danych jest nieco inna. W przykładzie 1 rekordy (lub wiersze) są dodawane do skoroszytu po jednym naraz. W przykładzie 4 rekordy są dodawane masowo przez dołączenie tabeli programu Excel do bazy danych programu Access i uruchomienie kwerendy dołączającej (lub instrukcji INSERT INTO..SELECT FROM) w celu dołączenia rekordów z tabeli programu Access do tabeli programu Excel. Po przesłaniu danych tabela programu Excel zostaje odłączona od bazy danych programu Access i wynikowy skoroszyt zostaje wyświetlony w programie Excel. Zamknij program Excel i powróć do aplikacji Visual Basic.

  8. Ostatni przykład ilustruje sposób odczytywania danych ze skoroszytu programu Excel. Zaznacz pozycję table na liście rozwijanej, a następnie kliknij przycisk Sample 5. W okienku bezpośrednim zostanie wyświetlona zawartość wybranej tabeli. Jeśli zaznaczysz cały arkusz (Sheet1$ lub Sheet2$) dla tabeli, w okienku bezpośrednim zostanie wyświetlona zawartość wykorzystanego zakresu z tego arkusza. Należy zauważyć, że używany zakres nie musi się zaczynać od wiersza 1 i kolumny 1 arkusza. Używany zakres zaczyna się od skrajnej lewej górnej komórki arkusza, która zawiera dane.

    Jeśli zostanie wybrany określony adres zakresu lub zakres zdefiniowany, w okienku bezpośrednim zostanie wyświetlona zawartość tylko tego zakresu arkusza.
Aby użyć stron ASP:
  1. Utwórz nowy folder o nazwie ExcelADO w katalogu macierzystym na serwerze sieci Web. Należy zauważyć, że domyślną ścieżką katalogu macierzystego jest C:\InetPut\WWWRoot.
  2. Skopiuj następujące pliki do folderu utworzonego w poprzednim kroku:
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Skrypty ASP wykorzystane w tym przykładzie tworzą kopie szablonów skoroszytu za pomocą metody Copy obiektu FileSystemObject. Aby wykonanie metody Copy się powiodło, klient, który uzyskuje dostęp do skryptu, musi mieć prawo do zapisu w odniesieniu do folderu zawierającego stronę ASP.
  4. Przejdź do strony Orders.asp (tj. do pliku http://Twój_serwer/ExcelADO/Orders.ASP) i zwróć uwagę, że w przeglądarce jest wyświetlany skoroszyt programu Excel podobny do skoroszytu z przykładu 1 aplikacji Visual Basic.
  5. Przejdź do strony EmpData.asp (tj. do pliku http://Twój_serwer/ExcelADO/EmpData.ASP) i zwróć uwagę, że w przeglądarce jest wyświetlany skoroszyt programu Excel podobny do skoroszytu z przykładu 2 aplikacji Visual Basic.
(c) Microsoft Corporation 2000. Wszelkie prawa zastrzeżone. Autor: Lori B. Turner, firma Microsoft Corporation.

Materiały referencyjne

Aby uzyskać dodatkowe informacje, kliknij następujące numery artykułów w celu wyświetlenia tych artykułów z bazy wiedzy Microsoft Knowledge Base:
195951 HOWTO: Query and Update Excel Data Using ADO From ASP
194124 PRB: Excel Values Returned as NULL Using DAO OpenRecordset
193998 HOWTO: Read and Display Binary Data in ASP
247412 INFORMACJE: Metody transferu danych do programu Excel z programu Visual Basic
257819 HOWTO: Use ADO with Excel Data from Visual Basic or VBA

Właściwości

Numer ID artykułu: 278973 - Ostatnia weryfikacja: 13 czerwca 2007 - Weryfikacja: 6.0
Informacje zawarte w tym artykule dotyczą:
  • Microsoft Excel 2000 Standard Edition
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Professional Edition
  • Microsoft Visual Basic 6.0 Enterprise Edition
  • Microsoft Active Server Pages 4.0
Słowa kluczowe: 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973

Przekaż opinię

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com