vbamania.pl
login:
hasło:
 
  *Rejestracja *Zapomniane hasło
 Dziś jest środa, 30 kwietnia 2025 roku.
Ustaw jako stronę startową Ulubione Napisz
PowrótPowrót do serwisu  RegulaminRegulamin rssRSS

  tytuł wątku:
Wątki dyskusji

ściąganie danych do comboboxa i textboxa. HELP!!!


otwartyotwarty rozpoczął: vhlotor postów: 13



napisał: vhlotor
postów: 8


umieszczony:
27 lipca 2006
10:48

  
Problem dostępu do pliku rozwiązałem. Buszując po necie udało mi się wreszcie znaleźć odpowiedni kod. Natomiast cały czas pozostaje problem importu danych do comba (wszystko jedno czy z txt czy xls) i przypisania mu wartości z drugiej kolumny. Proszę, połamcie troszkę głowy nad moim problemem. Zlitujcie się ;)
napisał: vhlotor
postów: 8


umieszczony:
21 czerwca 2006
10:59

  
aktualnie testuję wasze propozycje. jeśli wpadniecie na jeszcze jakieś ciekawe rozwiązania to piszcie. im więcej tym lepiej :) Co do pytania Trebora o "sposób nie działania" kodu. Poprostu wyłącza makro. Zatrzymuje się i tyle. nawet nie wyświetla błędu w kodzie :/ Pozdro i naprawdę wielkie dzięki za zainteresowanie!
napisał: Rycho
postów: 291


umieszczony:
20 czerwca 2006
14:01

  
Errata.
W kodzie jest mała :( niedoróbka. Nie zamyka on excela.
Powinno być:

Sub Wczytaj_Dane_z_Excela()
'...
  FlagaDaneAB = True
  
  Set xlRg = Nothing
  xlBook.Close SaveChanges:=False
  Set xlBook = Nothing
  xlApp.Application.Quit
  Set xlApp = Nothing
End Sub



Rycho
napisał: Rycho
postów: 291


umieszczony:
20 czerwca 2006
02:43

  
Witam.
Założenia: w Arkuszu1 wybieranego pliku excela jest umieszczona baza kodow pocztowych (miejscowość, kod pocztowy).

Przykład zrobiłem w wordzie :) wywołując z niego excela.
Może się przyda?
'MODUŁ OGÓLNY

'Dane z excela będą pobierane tylko jeden raz
Public FlagaDaneAB As Boolean 'czy tablica została pobrana
Public daneAB()               'tablica danych z kolumn A:B z excela

Sub test()
  UserForm1.Show
End Sub

Sub Wczytaj_Dane_z_Excela()
  Dim xlApp As Object
  Dim xlBook As Excel.Workbook
  Dim xlRg As Excel.Range
  Dim xlFileName As String
  
  If FlagaDaneAB = True Then Exit Sub
  
  Set xlApp = CreateObject("excel.application")
  'wybór pliku do otwarcia
  'ChDir "C:\dane"
  'UWAGA: poniższa instrukcja rodzi problemy przy analizie kodu 'krok po kroku'
  'neleży ją "przeskoczyć" umieszczając punkt zatrzymania za nią
  xlFileName = Excel.Application.GetOpenFilename("Arkusze excela ,*.xls")
  
  'otwarcie skoroszytu
  Set xlBook = Excel.Workbooks.Open(xlFileName)
  'przepisanie kolumn do tablicy
  With xlBook.Worksheets("Arkusz1")
    Set xlRg = .Range("A1:B" & .Range("A1").End(xlDown).Row)
    daneAB = xlRg.Value
  End With
  FlagaDaneAB = True
  
  Set xlBook = Nothing
  Set xlApp = Nothing
End Sub


'MODUŁ USERFORM
'okno zawiera: pole kombi, pole tekstowe, przycisk

Private Sub CommandButton1_Click()
  Unload Me
End Sub

Private Sub ComboBox1_Change()
  TextBox1.Value = ComboBox1.Value
End Sub

Private Sub UserForm_Initialize()
  Call Wczytaj_Dane_z_Excela
  
  'daneAN jako lista pola kombi
  ComboBox1.List = daneAB
  ComboBox1.BoundColumn = 2
End Sub



Rycho
napisał: Trebor
postów: 1209


umieszczony:
19 czerwca 2006
21:02

  
Cytat:

Set xlapp = CreateObject("excel.application")
    file_path = "c:\zam\"
    file_path = file_path + "zam.xls"
    Set xlapp = GetObject(file_path)



Co oznacza nie działa (zatrzymuje się, wyskakuje błąd itd)
W VBA ten fragment działa z tym, że obiekt Zam.xls jest ukryty.
Może pomoże to:
xlapp.Application.Visible = True
lub
Windows("zam.xls").Visible = True
a może jedno i drugie ?
Pozdrawiam
napisał: vhlotor
postów: 8


umieszczony:
19 czerwca 2006
09:15

  
To fragment kodu poprzez który ściągam dane z arkusza:
Dim CR As String    ' Chr$(rcCR) = Chr$(13) = Control-M
    Dim ESC As String   ' Chr$(rcESC) = Chr$(27) = Control-[
    Dim file_path
    Dim Get_Art_From_Excel As String
    Dim Get_Cnt_From_Excel As Integer
    Dim Get_Price_From_Excel As Double
    Dim Get_Cnuf_From_Excel As String
    Dim Get_Dept_From_Excel As String
    Dim str_Price_full As String
    
    CR = Chr$(rcCR)
    ESC = Chr$(rcESC)
    
    
    Set xlapp = CreateObject("excel.application")
    file_path = "c:\zam\"
    file_path = file_path + "zam.xls"
    Set xlapp = GetObject(file_path)
    Session.Transmit CR
    Get_Cnuf_From_Excel = xlapp.Sheets("Arkusz1").cells(1, 2).Value
    Session.Transmit Get_Cnuf_From_Excel & CR
    Get_Dept_From_Excel = xlapp.Sheets("Arkusz1").cells(2, 2).Value
    Session.Transmit Get_Dept_From_Excel & CR


Nie jest to jakaś profesjonalka, zwłaszcza że nie moja, kolega mi podsunął, i ściągam przez linię:
xlapp.Sheets("Arkusz1").cells(1, 2).Value

. Jeśli jest jakiś lepszy sposób to, please!, podajcie. Co zrobić jeśli chce żeby ściągał mi dane z kolejnych komórek aż nie znajdzie pustej? Chodzi o to żeby uzupełniać listę, a nie zmieniać kodu.

Aby utrudnić problem :P dodam jeszcze coś. Jak poprawić wybór pliku *.xls, aby można było wybierać dowolny, poprzez przycisk i okienko dialogowe (jak w windowsie). Takie okno już umiem otwierać i wpisać nawet ścieżkę dostępu do textboxa, ale jak korzystam z deklaracji pilku jak w przedstawionym fragmencie to to nie chce działać :( Chodzi o poprawienie fragmentu:
Set xlapp = CreateObject("excel.application")
    file_path = "c:\zam\"
    file_path = file_path + "zam.xls"
    Set xlapp = GetObject(file_path)



Pozdrawiam i dziękuję za odzew (i chęci :P)
napisał: Trebor
postów: 1209


umieszczony:
18 czerwca 2006
21:59

  
Coś wydaje się, że problem nie jest skomplikowany tylko mamy problem z komunikacją. Tablicę łatwo stworzyć i wypełnić danymi pod VBA np:
'deklaracja tablicy dwuwymiarowej o trzech wierszach i dwóch kolumnach
Dim tablica(2, 1) As String
'wypełnienie tablicy
For a = 0 To 2
'pierwszy wiersz tablicy i pierwsza kolumna równa się zawartości komórki
tablica(a, 0) = Cells(a + 1, 1)
'pierwszy wiersz tablicy i druga kolumna równa się zawartości komórki
tablica(a, 1) = Cells(a + 1, 2)
Next a
ComboBox1.List() = tablica


Czy potrafisz do zmiennej pobrać zawartość komórki?
Coś w rodzaju a = Range("A1") lub a = cells(1,1)
Pozdrawiam
napisał: vhlotor
postów: 8


umieszczony:
18 czerwca 2006
21:21

  
Jeśli chodzi o posta Admina to niestety nie chodzi mi o dwie kolumny w comboboxie. Pracuję w programi o nazwie GOLD co niewiele może wam mówić. Korzysta on z edytora VB jaki jest w aplikacji Office. Jest to dość ograniczony edytor w porównaniu z innymi, bardziej rozbudowanymi. Już choć po opcjach comba w Accesie i edytorze VBA można to zobaczyć.

Teraz do Trebora: działam trochę na czuja i jestem początkującym w VB więc jeżeli masz namiary na jakiś dobry kurs wyjaśniający podstawy prostym językiem to byłbym wdzięczny. Czy z danych w Excelu mogę zbudować tę tablicę.

nie wiem czy dobrze zrozumiałem: "Jeśli pytanie dotyczy jak pobrać dane z excela w VBE to nie potrafię pomóc", lecz jeśli tak to chyba właśnie o to mi chodzi aby za pomocą kodu VB pobrać dane z arkusza Excel tak aby pierwsza kolumna arkusza została wpisana do comba a odpowiadające jej wiersze z drugiej kolumny przypisane tym wartościom i wyświetlane w textboxie.
Tzn. jeśli pobrałem z komórki A1 wartość np. Białystok to kod pod case ma być: textbox.text = "10101", itd.

Mam nadzieję że da się to zrobić i ktoś mnie poratuje bo już bałej gorączki dostaję.

Pozdrawiam
napisał: admin
postów: 613


umieszczony:
18 czerwca 2006
17:42

  
Cytat:
Mam spory problem a tłukę się już po necie ze 2 tygodnie i nic. Chcę ściągnąć dane z jednej kolumny w arkuszu excel do combobox'a i z tego samego arkusza tylko z innej kolumny przypisać wartości do odpowiednich wierszy comba.

Przykład:

Białystok | 10101
Katowice | 23212
Kraków | 22991
...

i z takie przykładowe dane odpowiadające sobie chce przypisać kolejno do comba i jego wierszy, czyli jeżeli mam wiersz "Białystok" to żeby pobierał mi dla case wartość "10101". A... i drugą wartość (z case) chcę później umieścić w textboxie. Mam nadzieję że rozumiecie o co mi chodzi i że pomożecie. Z góry dzięki!


Czy chodzi Ci o to, że masz w Comboboksie dwie kolumny?
W jednej chesz mieć:
Białystok
Katowice
Kraków
...

a w drugiej:

10101
23212
22991
...

Jeśli wybierzesz z Comboboxa "Białystok" to w Tektboxa ma się wpisać 10101?
Dobrze Cię zrozumiałem?
Czy umieszczasz kontrolki na formularzu w edytorze VBA?

Poza tym nie rozumiem co to znaczy "Czy da się to wogóle zrobić w ograniczonym edytorze?"? Edytor VBA nie jest w żadnym stopniu ograniczony!!!
Pod jaką aplikację macierzystą piszesz swój program VBA?
napisał: Trebor
postów: 1209


umieszczony:
18 czerwca 2006
16:29

  
Jeśli pytanie dotyczy jak przypisać do comba jakieś dane to najłatwiej to zrobić mając tablicę danych np:
ComboBox1.List() = tablica


Mam badzieję, że działa to również w VBE.
Jeśli pytanie dotyczy jak pobrać dane z excela w VBE to nie potrafię pomóc.
Pozdrawiam
napisał: vhlotor
postów: 8


umieszczony:
18 czerwca 2006
14:13

  
niestety chyba jednak nie o to chodziło :( Ale dzięki za chęci. Pracuję na aplikacji korzystającej z Microsoft Visual Basic Editor i ma do dyspozycji tylko to co jest w nim. a w opcjach comba nie było linii ListFillRange. Pozatym chyba zrozumiałeś o co chodzi :) Czy da się to wogóle zrobić w ograniczonym edytorze? Nadal proszę o pomoc. Jeśli będą potrzebne moje pliki (formy, makra, itp.) to proszę o kontakt e-mailowy pod adresem: vhlotor@o2.pl
napisał: Trebor
postów: 1209


umieszczony:
16 czerwca 2006
20:14

  
Hej
Mam nadzieję, że combo i textbox masz z przybornika formantów.
Wejdź we własciwości Comboboxa i dla ListFillRange wpisz adres np. w postaci Arkusz1!A1:B3 (dwie kolumny). W zdarzeniu
Private Sub ComboBox1_Click()
TextBox1.Text = ComboBox1.List(ComboBox1.ListIndex, 1)
End Sub



Czy o to chodziło?
Pozdrawiam
napisał: vhlotor
postów: 8


umieszczony:
16 czerwca 2006
10:39

  
Mam spory problem a tłukę się już po necie ze 2 tygodnie i nic. Chcę ściągnąć dane z jednej kolumny w arkuszu excel do combobox'a i z tego samego arkusza tylko z innej kolumny przypisać wartości do odpowiednich wierszy comba.

Przykład:

Białystok | 10101
Katowice | 23212
Kraków | 22991
...

i z takie przykładowe dane odpowiadające sobie chce przypisać kolejno do comba i jego wierszy, czyli jeżeli mam wiersz "Białystok" to żeby pobierał mi dla case wartość "10101". A... i drugą wartość (z case) chcę później umieścić w textboxie. Mam nadzieję że rozumiecie o co mi chodzi i że pomożecie. Z góry dzięki!


<-wstecz  1  dalej->
wszystkich stron: 1


Sortuj posty: z