[VBA-Word] Listbox + Excel Data

Pagina: 1
Acties:
  • 508 views sinds 30-01-2008
  • Reageer

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Hey ik ben nieuw met VBA. Ik moet bepaalde inhoud van een excel (xls) datasheet invoegen in een listbox in VBA.
Ik wil bijvoorbeeld berijk B2:B10 invoegen, dat zijn alle vermeldingen van de productomschrijvingen (ik wil een beheersysteem maken).
Kan iemand me helpen? Alvast bedankt :)

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Daar heb je toch geen VBA voor nodig ?

Afbeeldingslocatie: http://www.endoria.net/upload/?bekijk=2276049175

-Rechterklik op dropdownbox
-Element opmaken..

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Nee!! je heb het helemaal verkeerd. Ik wil in WORD 2000 VBA in een ListBox (geen dropdown) het bereik B2:Bx invoegen uit een extern bestand. Ik heb gezocht op inet hoe ik dit moet doen maar heb niks kunnen vinden (alles gaat uit van excel zelf). Cheers

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Op dinsdag 26 maart 2002 11:15 schreef 0px het volgende:
Nee!! je heb het helemaal verkeerd.
Nee!! jij legt niet goed uit. take it easy hoor. Probeer alleen maar te helpen.

Dan zou je iets als het volgende moeten doen. half-pseudo code:
code:
1
2
3
4
5
6
7
8
9
10
Cel1 = "B1"
Workbooks.Open ("Filename")

Workbooks("Filename").Sheets("Sheetnaam").Range(Cel1).Select
Do While ActiveCell.Value <> ""
    ListBox.AddItem ActiveCell.Value
    Selection.Offset(1, 0).Select
Loop

Workbooks("FileName").Close False

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Sorry het was niet lullig bedoeld. Ik had als topic alleen VBA-Word gedaan, dus je zat er ff naast. Maar ik heb nu 2 bestanden, voorraad.xls en voorraad.doc. In dat document heb ik een keuzelijst (ListBox) en daarin de volgende code:

Private Sub Voorraad_Click()
Cel1 = "B2"
Workbooks.Open ("voorraad.xls")
Workbooks("voorraad.xls").Sheets("voorraad").Range(Cel1).Select
Do While ActiveCell.Value <> ""
ListBox.AddItem ActiveCell.Value
Selection.Offset(1, 0).Select
Loop
Workbooks("voorraad.xls").Close False

End Sub

Alleen werken doet het nog niet :9 wat doe ik fout?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Op dinsdag 26 maart 2002 12:08 schreef 0px het volgende:

Alleen werken doet het nog niet :9 wat doe ik fout?
code:
1
2
3
4
5
6
7
8
9
10
11
Private Sub Voorraad_Click()
Cel1 = "B2"
Workbooks.Open ("voorraad.xls")
Workbooks("voorraad.xls").Sheets("voorraad").Range(Cel1).Select
Do While ActiveCell.Value <> ""
    ListBox.AddItem ActiveCell.Value
    Selection.Offset(1, 0).Select
Loop
Workbooks("voorraad.xls").Close False

End Sub

Listbox.AddItem moet natuurlijk wel veranderd worden in de echte naam van je listbox.

Geef anders even aan WAAR ie de fout in gaat.

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Private Sub Userform_Initialize()
Cel1 = "B2"
Workbooks.Open ("voorraad.xls")
Workbooks("voorraad.xls").Sheets("voorraad").Range(Cel1).Select
Do While ActiveCell.Value <> ""
Voorraad.AddItem ActiveCell.Value
Selection.Offset(1, 0).Select
Loop
Workbooks("voorraad.xls").Close False

End Sub

Selection. * Offset * (1, 0). >> KAN methode of gegevenslid niet vinden???

(ik heb hem ook even userform_initialize gemaakt)

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Dan maar even wat meer basic :)
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Dim Rij As Integer
Dim FileName As String
Dim SheetName As String

FileName = "voorraad.xls"
SheetName = "voorraad"
Rij = 2

Workbooks.Open (FileName)

Workbooks(FileName).Sheets(SheetName).Range("B" & Trim(CStr(Rij))).Select

Do While Workbooks(FileName).Sheets(SheetName).Cells("B" & Trim(CStr(Rij))).Value <> ""
    Me.Voorraad.AddItem Trim(CStr(Workbooks(FileName).Sheets(SheetName).Cells("B" & Trim(CStr(Rij))).Value))
    Rij = Rij + 1
Loop

Workbooks(FileName).Close False

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
hey, dit is nu m'n hele code:

Private Sub Voorraad_Initialize()
Dim Rij As Integer
Dim FileName As String
Dim SheetName As String
FileName = "voorraad.xls"
SheetName = "voorraad"
Rij = 2

Workbooks.Open (FileName)

Workbooks(FileName).Sheets(SheetName).Range("B" & Trim(CStr(Rij))).Select

Do While Workbooks(FileName).Sheets(SheetName).Cells("B" & Trim(CStr(Rij))).Value <> ""
Me.Voorraad.AddItem Trim(CStr(Workbooks(FileName).Sheets(SheetName).Cells("B" & Trim(CStr(Rij))).Value))
Rij = Rij + 1
Loop

Workbooks(FileName).Close False
End Sub

M'n listbox heeft de naam Voorraad
De sheet waar de data instaat heet Voorraad
de xls file heet voorraad (staat in zelfde map als het doc bestand). Als ik op run klik zie ik niks in de listbox :(
Ligt het aan Voorraad_initialize ofzo? moet ik daar iets anders mee doen? Als ik userform_initialize doe krijg ik een object vereist error |:(

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Upload anders dat excel bestandje even hier : http://www.endoria.net/upload/

Dan kijk ik wel even.. * Skinny is in de help-mood vandaag ;-)

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
hehe ja erg bedankt hoor!

hier is xls
http://www.endoria.net/upload/?bekijk=1269651301
en hier doc (gwoon alles basic)
http://www.endoria.net/upload/?bekijk=2810247131

thx yuo!!1 :)

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
m'n bedoeling is dat je zo'n artikel kan aanklikken (de omschrijving moet in de list komen) en daarbij de gegevens daarnaast in textboxjes ziet. En bij het 2e gedeelte van het programma moet je gegevens kunnen toevoegen aan het xls bestand (2e tab).

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Ja logisch dat het niet werkt. Ik gaf Excel VBA code als voorbeeld, maar die vul jij in in een Word doc. :D.. dat gaat niet werken.

* Skinny dacht dat je Twee Excelbestanden gebruikte.

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
ja ooohw read TOPIC! [VBA-WORD] hahaha en ik zei het ook nog in m'n reply.. maar kan je me dan helpen of niet :'(

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Sorry! |:( maar ik ga ff kijken nu.. moet het in Word? Wat is het doel van het formulier ?

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
m'n bedoeling is dat je zo'n artikel kan aanklikken (de omschrijving moet in de list komen) en daarbij de gegevens daarnaast in textboxjes ziet. En bij het 2e gedeelte van het programma moet je gegevens kunnen toevoegen aan het xls bestand (2e tab). dus in word listbox excel gegevens oproepe en dan via 2e deel van programma gegevens wegschrijven naar dat excel bestand. maar ik MOET het in word doen!! l8r

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Ik weet niet waarom je dat in Word zou willen doen als het in Excel net zo makkelijk (zo niet makkelijker) gaat. Dat mag je me nog even uitleggen :

Hier in ieder geval mijn oplossing. Verdient niet de schoonheidsprijs, maar het werkt wel

Download

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Ja het werkt idd, bedankt. Maar ik kan dit niet in Word gebruiken neem ik aan? Ik moet dit namelijk hebben als basis voor een schoolproject, MOET in Word. Ik wil gewoon dat xls bestand gebruiken als externe opslagplaats. En daarom invoegen in word-vba listbox.

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Het moet wel kunnen, maar dan moet je in Word een Excel object aanmaken.

Voorbeeldje : http://www.erlandsendata.no/english/vba/ole/controlexcel.htm

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Deze taal is nog te hoog gegrepen voor me. Ik ben echt een VBA noob :P, kan ik dit gewoon copy + paste doen? :?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Op dinsdag 26 maart 2002 17:35 schreef 0px het volgende:
Deze taal is nog te hoog gegrepen voor me. Ik ben echt een VBA noob :P, kan ik dit gewoon copy + paste doen? :?
Nee helaas, dit voorbeeld is alleen om aan te geven hoe je vanuit word een Excel sheet kunt aanroepen en uitlezen.

Je zult het e.e.a. moeten aanpassen om het werken te krijgen, maar als je een beetje logisch kunt nadenken (en eventueel al prog. ervaring hebt) moet je met dit voorbeeld in combinatie met de sheet die ik geupload hebt, toch een heel eind kunnen komen.

SIZE does matter.
"You're go at throttle up!"


  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Ik zal het proberen, veel programmeerervaring heb ik niet, ik heb alleen een news updater en guestbook in PHP geschreven, maar als het me echt niet lukt kan ik jou toch om hulp vragen? L8R

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Sub CreateNewExcelWB()
' to test this code, paste it into a Word module
' add a reference to the Excel-library

wat wordt er bedoeld met dat laatste?

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
Ik weet niet hoe ik de excel code succesvol naar word code kan omzetten... dit is wat ik nu heb.. :?

Sub OpenVoorraadBestand()

Dim xlApp As Excel.Application
Dim xlWB As Excel.Workbook

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
Set xlWB = xlApp.Workbooks.Open("C:\vba\voorraad.xls")
xlWB.Close False
' xlApp.Quit
Set xlWB = Nothing
Set xlApp = Nothing
End Sub
Private Sub UserForm_Initialize()

Dim Rij As Integer

Rij = 2

Sheets(SheetName).Range("B" & Trim(CStr(Rij))).Select

Do While Blad1.Range("B" & Trim(CStr(Rij))).Value <> ""
frmVoorraad.lstVoorraad.AddItem Trim(CStr(Sheets(SheetName).Range("B" & Trim(CStr(Rij))).Value))
Rij = Rij + 1
Loop

End Sub
Private Sub TextBox1_Change()

End Sub

Private Sub lstVoorraad_Click()

Dim Rij As Integer

Rij = frmVoorraad.lstVoorraad.ListIndex + 2 '+2 omdat de index bij 0 begint

frmVoorraad.txtNaam.Text = Sheets(SheetName).Range("A" & Trim(CStr(Rij))).Value
frmVoorraad.txtLeverancier.Text = Sheets(SheetName).Range("C" & Trim(CStr(Rij))).Value
frmVoorraad.txtSerienummer.Text = Sheets(SheetName).Range("D" & Trim(CStr(Rij))).Value
frmVoorraad.txtVoorraad.Text = Sheets(SheetName).Range("E" & Trim(CStr(Rij))).Value

End Sub

  • Thunk
  • Registratie: Maart 2002
  • Laatst online: 11-07 21:16
ik open wel een nieuwe topic met een duidelijke vraag
Pagina: 1