VBA, Word en Excel 2013 doen iets wat ik niet wil

Status
Niet open voor verdere reacties.

jackfish

Gebruiker
Lid geworden
10 sep 2010
Berichten
297
Ik wil in een Word-userform, de combobox laden met gegevens uit een excelbestand. Dat werkt met onderstaande code. Alleen kan ik het Excel bestand nadien niet bewerken omdat het in de modus alleen lezen is gezet. Ik weet even niet hoe dit te verhelpen.

Alvast dank voor het meedenken en de aanwijzingen.

Code:
Sub combobox()
    Dim Xlapp As Object
    Dim XLwb As Object
    Dim XlSht As Object
     
    Dim x As Integer
    Dim y As Integer
    Dim z As Integer
    Dim a As Integer
    Dim b As Integer
    
        
    Dim Myarray_A(50)
    Dim Myarray_B(50)
    Dim Myarray_C(50)
    Dim Myarray_D(50)


    Set Xlapp = CreateObject("Excel.Application")
    Set XLwb = Xlapp.Workbooks.Open("C:\Test\Registratieformulier.xlsx")
    Set XlSht = XLwb.Worksheets("Blad1")
    
        For x = 2 To 50
        Myarray_A(x - 1) = XlSht.Range("A" & x).Value
        Next x
    
        For y = 2 To 50
        Myarray_B(y - 1) = XlSht.Range("E" & y).Value
        Next y
    
        For z = 2 To 50
        Myarray_C(z - 1) = XlSht.Range("H" & z).Value
        Next z
        
        For a = 2 To 50
        Myarray_D(a - 1) = XlSht.Range("N" & a).Value
        Next a
    
        For b = 2 To 50
        Myarray_E(b - 1) = XlSht.Range("P" & b).Value
        Next b
    
        UserForm1.textbox16.List() = Myarray_A
        UserForm1.textbox17.List() = Myarray_D
        UserForm1.textbox18.List() = Myarray_A
        UserForm1.textbox19.List() = Myarray_D
        UserForm1.textbox20.List() = Myarray_B
        UserForm1.textbox21.List() = Myarray_C
        
        UserForm1.textbox33.List() = Myarray_E
        UserForm1.textbox43.List() = Myarray_E
        UserForm1.textbox53.List() = Myarray_E
        UserForm1.textbox63.List() = Myarray_E
End Sub
 
Je opent:
Code:
Set Xlapp = CreateObject("Excel.Application")
    Set XLwb = Xlapp.Workbooks.Open("C:\Test\Registratieformulier.xlsx")
    Set XlSht = XLwb.Worksheets("Blad1")

maar je sluit niks af \ zet op nothing

jouw bestand blijft dus open staan in een aparte instantie van Excel
 
Je sluit het document en Excel niet als de procedure klaar is. Dan blijft alles open staan.
 
Natuurlijk :eek:, dank voor de tip E v R en Octafish. Dan zou onderstaande moeten volstaan

Code:
Set XlSht = Nothing
Xlapp.DisplayAlerts = False
XLwb.Save
Xlapp.DisplayAlerts = True
XLwb.Close
Set XLwb = Nothing
Xlapp.Quit
Set Xlapp = Nothing
 
Tekstvakken hebben geen .List eigenschap. Comboboxen zou ik, om verwarring te voorkomen, dan ook geen textbox noemen.

zo zou ik het doen: zonder variabelen

Code:
Private Sub Userform_Initialize()
   with getobject("C:\Test\Registratieformulier.xlsx").sheets("Blad1")
      C_16.list=.range("A1:A50").value
      C_20.list=.range("E1:E50").value    
      C_21.list=.range("H1:H50").value
      C_17.list=.range("N1:N50").value
      C_33.list=.range("P1:P50").value
      .parent.close 0
   end with

   C_18.List = C_16.list
   C_19.List = C_17.list
        
   C_43.List = C_33.List
   C_53.List = C_33.List
   C_63.List = C_33.List
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan