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

[VB] Import/eksport danych z Excela

10 Gru 2008 11:46 16778 8
  • Poziom 10  
    Witam:)
    Ucze sie w jednym z College'ow w Irlandii (cos jakby liceum w Polsce).
    Chcialbym miec wyzsza ocene z informatyki, wobec tego moj nauczyciel przedstawil mi projekt, ktory mialbym wykonac przez swieta. Projekt ten mial by sie opierac na polaczeniu aplikacji VB z dokumentem innej aplikacji MS Office.

    Jestem poczatkujacy w Visual Basic i nawet jezyk ten mi sie podoba.
    Chcialbym sie dowiedziec od szanownych kolegow/kolezanek kilku rzeczy, o ile nie sprawi to nikomu problemu. Oto moje pytania:

    1. jak mozna importowac do programu napisanego w VB dane z excela
    2. czy jest funkcja ktora pozwoli przetworzone przez VB dane zapisac ponownie w pilku .xls

    Dziekuje za wszystkie odpowiedzi i gorraco wszystkich pozdrawiam
    GPP

    Regulamin, punkt 11.
    Poprawiłem temat.
    [Dr.Vee]
  • Moderator Programowanie
    Najprościej będzie chyba wykorzystać plik tekstowy jako "pośrednik" między programem napisanym w VB a skoroszytem Excel'a. Dość prosto można zapisać /odczytać i przypisać wartości zmiennym do/z pliku tekstowego zarówno w VB, jak i VBA Excel'a.
    Poczytaj o instrukcjach VB: Open, Write, Input i bazach danych w VB.
    Możesz posunąć się także krok dalej wykorzystując możliwości automatyzacji OLE (Office 97 i wyżej)
  • Poziom 10  
    Dziekuje adamas_nt . To co napisales napewno mi pomoze. Widze ze jestes zoirentowany dobrze w temacie. Wobec tego zadam Ci jeszcze jedno pytanie: czy wykorzystanie bazy danych z MS Access mogloby byc prostsze niz import z excela? Slyszalem ze to tez jest mozliwe.
    Pozdro

    Dodano po 25 [minuty]:

    Ach, jeszcze jedno: czy mozliwe jest uruchomienie makra zapisanego w excelu z poziomu aplikacji Visual Basic?
  • Moderator Programowanie
    1. Jeśli chodzi o OLE to nie ma znaczenia czy wstawiasz obiekt typu Arkusz Excel'a, czy bazę Access'a. Tak naprawdę VB uruchamia program, w którym plik był napisany. Jedynym warunkiem jest to, że musisz mieć zainstalowanego Office'a. Ale to pewnie już wiesz.

    2. Generalnie to ten sam język. Formularze, pętle, procedury, komunikaty itd działają identyczne. VBA jest tylko nieco inaczej zorientowany, ma także swoje wewnętrzne procedury zdarzeniowe. Jeżeli nie odnosisz się bezpośrednio do konkretnych komórek, zakresów i arkuszy (Excel) oraz raportów, kwerend, makr stworzonych kreatorem (Access) to oczywiście tak.
    Z pewnością zauważyłeś, że VBA nie wymusza definiowania typu zmiennych i choć to dobry nawyk nie zawsze się go stosuje. Dlatego jeżeli piszesz program z zamiarem eksportowania go do VB to należy trzymać się zasad. Natomiast w drugą stronę nie ma problemu.
  • Poziom 14  
    Strony z odpowiedziami:

    http://support.microsoft.com/default.aspx?scid=kb;en-us;301982
    http://www.freevbcode.com/ShowCode.asp?ID=3039
    http://www.bigresource.com/VB-Export-ListView-Contents-To-Excel--xzkKmFAFvC.html
    http://www.vb6.us/

    Dodano po 8 [minuty]:

    W załaczniku program napisany w VB6, który eksportuje z listview do formatu csv, który można otworzyć w excelu.
  • Moderator Programowanie
    :arrow: tufus
    Bardzo fajne linki. Dołączam się do podziękowań i polecam lekturę autorowi.
  • Poziom 10  
    Drodzy Koledzy
    dziekuje Wam za cenne wskazowki, a szczegolnie za linki. Napewno mi pomoga i wypelnia dlugie, zimowe wieczory.
    Biore sie do programowania :)
    Jak zatrzyma mnie jakis problem, napewno sie jeszcze tu odezwe.

    Tym czasem zycze Wam Wesolych Swiat!

    Dzieki jeszcze raz
  • Poziom 10  
    Witam.
    Znowu mam klopoty.

    Moze niedostatecznie wyjasnilem problem za co z gory przepraszam. Zaczne wiec od poczatku. Program, ktory chce napisac to prosta (mam nadzieje) aplikacja magazynowa.
    Aplikacja ma polegac na zlozeniu zamowienia na okreslona ilosc sztuk produktu. Na produkt skladac sie bedzie iles tam podproduktow, ktore sa na magazynie. Zawartosc magazynu jest zapiasana w arkuszu excela. Uzytkownik klikajac przycisk importuj, importuje do pol tekstowych dane z excela. Nastepnie dane te sa przetwarzane (obliczenia na podstawie zlozonego zamowienia) i dane po przetworzeniu zostaja ponownie zapisane do excela.

    Problem polega na zaimportowaniu po nacisnieciu przycisku zawartosci komorki B3 z arkusza excel do pola tekstowego w programie VB textBox1 i po matematycznym przeksztalceniu wyeksportowaniu wartosci z textBox2 do komorki B3 w excelu.

    Znalazlem w sieci informacje na temat eksportowania listView do Excela i Accessa. Jednakze nie jestem przekonany czy listView sprosta mojemu zadaniu, natomiast wielokrotnie wykonywalem juz obliczenia i przeksztalcenia w polach tekstowych.

    Pozdrawiam i zycze Wesolych Swiat!
    GPP




    Dodane 22.12.2008 21:41


    Witam!

    Nikt nie odpisuje - zapewne swiateczna atmosfera juz gosci, a moze ludzie sa zapracowani. Nie mam naturalnie zadnych pretensji, ale samodzielnie staram sie popychac swoj programik do przodu i przy okazji nie balaganic na forum, wiec scalam swoje posty.

    Ruszylem do przodu ze swoja aplikacja ale w sposob inny. Nie powiedzialem wczesniej, ze uzywam do programowania Microsoft Visual Studio 2008 z framework .NET 3.5. Byc moze to doprowadzalo do klopotow, bo w kazdym wklejonym tutorialu mialem bledy.

    Zaczalem wiec szukac u zrodla, a wiec na stronie Microsoftu. Znalazlem tam tutoriale dotyczace dostepu do sekwencyjnych plikow tekstowych (co sugerowal mi kolega adamas_nt). Sa tam tez informacje o dostepie do plikow binarnych (czyli o ile sie nie myle [poprawcie jesli tak] to wlasnie takie jak word i excel).

    To co osiagnalem, to zaimportowanie danych i prezentacja ich w oknie wiadomosci (messageBox). Teraz mysle jak poszczegolne wartosci zapisac np w tablicy (array) i stamtad wyeksportowac do pol tekstowych - to jedna z metod aby to zrobic. Moze ktos ma jakies pomysly?
  • Moderator Programowanie
    Wszystkiego Najlepszego w Nowym Roku.
    Postanowiłem się odezwać chociaż nie wiem, czy będę Ci w stanie pomóc.
    W mojej "przygodzie" z VBA do zapisywania wyników w pamięci zawsze stosowałem tablice jedno, dwu i rzadziej trójwymiarowe.
    Z drugiej strony projektując formularz zamówienia z danych przechowywanych w Excelu poskładałbym je (zamówienie) stosując Combobox'y, dla których łatwo zadeklarować listy zawierające dane o produktach, cenach, kategoriach, zamawiających itd. Jeszcze kilka pól tekstowych z datami, ilościami itp. i mamy gotowy rekord, który można zapisać w arkuszu Excela lub w pliku tekstowym.