VLookUp uit ander bestand

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Beste allemaal,

Ik heb in mijn bestand die ik toch verder aan het uitwerken ben besloten om deze niet toe te voegen in een ander bestand, maar ook wil ik niet de gehele klantenlijst kopieren en plaatsen in het nieuwe bestand.

Nu weet ik dat ik het blad: Debiteuren van bestand Facturatie TEST xlsm kan gebruiken. Ook weet ik dat het bestand waar de gegevens vandaan komen ook geopend moet zijn.

Nu ben ik aan het testen en testen en testen.... Maar je raadt het al... Ik kom er niet uit. Volgens mij als ik snel kijk, klopt de VLoopUP code wel, maar de verwijzing naar het blad klopt niet. ComboBox1 blijft leeg.

Wat is er verkeerd?

Code:
Private Sub ComboBox1_Change()

       With Workbook("Facturatie TEST.xlsm").Sheets("Debiteuren")
        ComboBox1.Value = Application.WorksheetFunction.VLookUP(Sheets("Debiteuren").Range("A4:U9000"), 1, False)
    End With
    
End Sub
 
Laatst bewerkt:
Trouwens ergens anders lees ik weer dat het bestand ook gesloten kan blijven :confused:
 
Ik zie dat ik geen zoekwaarde heb.. Dus, buiten het feit dat deze code niet werk, dien ik ook nog eerst een rowsource te gebruiken.

De RowSource zit in het bestand: Facturatie TEST.xlsm in diens Lijst met naam: Bedrijfsnaam

Waar ik dan nu met de eerste code op uitkom is als volgt:

Code:
Private Sub UserForm_Initialize()

    ComboBox1.RowSource = ("'Facturatie TEST.xlsm'!Bedrijfsnaam")

End Sub

Deze werkt. Alleen hier moet ik wel het bestand openen. Als het met een gesloten bestand kan, dan heb ik dat liever.

Hierna moeten er in een 3-tal tekstboxen afzonderijk de VLookUp worden gebruikt die verwijst naar tabblad Debiteuren en daar de rest van de gegevens uithalen. Gegevens zoals straat, plaats en Klantnummer.
 
Laatst bewerkt:
Test het zo eens.

Code:
Sub hsv()
With GetObject(ThisWorkbook.Path & "\Facturatie TEST.xlsm")
   UserForm1.ComboBox1.List = .Sheets("Blad1").Range("A1:A10").Value
   UserForm1.Show
  .Close
 End With
end sub
 
Gegevens uit een gesloten bestand ophalen kan met de oude 'ExecuteExcel4Macro'.
 
HSV. Ik heb de code van jou aangepast en hieronder vermeld.

Code:
With GetObject(ThisWorkbook.path & "\Facturatie TEST.xlsm")
         Frm_Invoer_Gegevens.ComboBox1.RowSource = ("'Facturatie TEST.xlsm'!Bedrijfsnaam")

        '.Close
    End With


De code opzicht werkt volgens mij wel. Wat ik ben vergeten te zeggen is dat ik het facuratie bestand tegen een wachtwoord aanloop. Ik krijg dus problemen en foutmeldingen.

De betreffende codes van het bestand Facturatie TEST.xlsm staan hieronder. En ja ik weet het... het kan korter. Is dan ook nagenoeg het eerste bestand die ik met hulp gemaakt heb. Ik denk dat Rudi onderstaande code wel bekend voorkomt. Deze heb ik later een beetje aangepast.

Code:
Private Sub WorkBook_Open()
        
        Sheets("Wachtwoord").Select
        
        With Application
            .ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
            .DisplayFormulaBar = False
            .DisplayStatusBar = False
            .OnKey "%{F8}", ""
            .OnKey "%{F11}", ""
        End With

        With ActiveWindow
            .DisplayWorkbookTabs = False
            .DisplayHeadings = False 'Speciaal enkel voor het eerste opstarten van sheets("Wachtwoord")
        End With
        
        Frm_005.CheckBox1.Value = False
        frm_001.Show

End Sub

Voor de volledigheid nog even de code van het userform Frm_001.

Code:
Private Sub UserForm_Initialize()

    'Formulier 001
    
    Caption = "Frm_001"
    BackColor = &HC0E0FF 'Kleur Roze
    
    tb_Aantal.Value = 1
    tb_Aantal.Visible = False
    lb_Pogingen.Caption = vbNewLine & " Voer uw wachtwoord in en klik op OK." & vbNewLine & vbNewLine & " Om dit bestand af te sluiten klikt u op AFSLUITEN."
    lb_Pogingen.BackColor = &HC0FFFF 'Kleur Geel
    cb_OK.Caption = "OK"
    cb_OK.BackColor = &HFF00& 'Kleur Groen
    cb_Afsluiten.Caption = "AFSLUITEN"
    cb_Afsluiten.BackColor = &HFF& 'Kleur Rood

End Sub

Private Sub cb_OK_Click()

    Const strPass As String = "test"
    Dim lPassAttempts As Long
    On Error GoTo 0
    lPassAttempts = tb_Aantal.Value

    Select Case lPassAttempts
    Case Is <= 2
        lb_Pogingen.Caption = vbNewLine & " U heeft een onjuist wachtwoord ingevoerd." & vbNewLine & " Voer nogmaals uw wachtwoord in." & vbNewLine & vbNewLine & " Ingave " & lPassAttempts & " van 3 is foutief."
        Select Case tb_Wachtwoord
        Case Is <> strPass
            With Me
                tb_Wachtwoord.Value = vbNullString
                tb_Wachtwoord.SetFocus
                tb_Aantal.Value = lPassAttempts + 1
            End With
        Case Else
            Call Naar_Hoofdmenu
        End Select
        
    Case Is > 1 'Behorende bij: Select Case lPassAttempts
        Select Case tb_Wachtwoord
        Case Is <> strPass
                Unload Me
                MsgBox "U heeft 3 keer een verkeerd wachtwoord ingevoerd." & vbNewLine & vbNewLine & "De toegang tot dit bestand is geblokkeerd." & vbNewLine & vbNewLine & "Klik op de knop OK om het bestand af te sluiten.", vbOKOnly + vbInformation, "Toegang geblokkeerd"
                Call Afsluiten 'Module 3
        Case Else
                Call Naar_Hoofdmenu
        End Select
        
    End Select 'Behorende bij: Select Case lPassAttempts
    
End Sub

Private Sub cb_Afsluiten_Click()

    Unload Me
    Call Afsluiten 'Module 3

End Sub

Sub Naar_Hoofdmenu()

    Unload Me
    Frm_005.CheckBox1.Value = True
    Select Case ThisWorkbook.Worksheets("Factuur maken").Range("C12")
    Case Is > 0
        With Frm_004
            .Caption = " TER UW INFORMATIE!"
            .Label1.Caption = vbNewLine & " Welkom!" & vbNewLine & vbNewLine & " Uit de standaard routinecontrole blijkt dat onderstaande factuur nog niet verwerkt is." & vbNewLine & vbNewLine & vbNewLine & "                                 Factuurnummer: " & Sheets("Factuur maken").Range("C30") & vbNewLine & "                                 Debiteur: " & Sheets("Factuur maken").Range("C12") & "   (" & Sheets("Factuur maken").Range("C23") & ")" & vbNewLine & vbNewLine & vbNewLine & " Geef aan wat u hiermee wilt doen."
            .cb_Opdracht_1.Caption = "Naar" & vbNewLine & "Hoofdmenu"
            .cb_Opdracht_2.Visible = False
            .cb_Opdracht_3.Caption = "Naar" & vbNewLine & "Factuur"
            .Show
        End With
    Case Else
            Call Hoofdmenu 'Module 1
    End Select

End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    If CloseMode = 0 Then Cancel = True
    
End Sub

Het blad: Hoofdmenu doet verder niets. Hier staan enkel knoppen die weer verder het programma in gaan. Nu lijkt het mij het handigste als de hele rits in Workbook_Open niet wordt aangesproken en dat de boel gewoon over het wachtwoord gebeuren heen gaat en direct naar tabblad Hoofdmenu. Ik vermoed dat ik dan ook geen foutmeldingen krijg.

Rudi. ExecuteExel4Macro... zegt mij niet veel. Sorry, maar als dat werkt dan heel graag.
 
Laatst bewerkt:
Of ik moet de boel wel gaan invoegen dan heb ik nergens last van, maar is dat wel makkelijk te doen?? Dus de bewuste tabbladen met vba volledig kopieren naar het bestand facturatie...
 
JA stop maar....

Het gaat nu volledig verkeerd.

Het lijkt wel of ik mijn werkbladen in eens allemaal kwijt ben. Ik heb geen idee wat ik heb gedaan, maar 1 ding is zeker. Ik heb geen tabbladen gewist. Bij afsluiten van bestand Facturatie TEST.xlsm telkens niet opgeslagen. BEWUST gedaan. Nu heb ik problemen.

Foutmelding:


Methode Select van object_Worksheet is mislukt........

Het bestand heeft altijd gewerkt en nu...... Nu heb ik een echt serieus probleem, want het is een reeds draaiend programma. Als die werkbladen weg zijn, dan ben ik gegevens kwijt.

En weer een ander probleem... Bestand is te groot
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan