• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

verticaal zoeken in ander excel bestand

  • Onderwerp starter Onderwerp starter KKn
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

KKn

Nieuwe gebruiker
Lid geworden
15 mei 2017
Berichten
4
uit een ander bestand probeer ik data over te halen. het openen van het bron bestand gaat goed, het daarna uitlezen en overhalen werkt niet. wat doe ik fout?
Sub verticaal_zoeken()
'
' verticaal_zoeken Macro
'
Dim oBoek1 As Object
Dim oBoek2 As Object
Dim sh1a As Object
Dim sh1b As Object
Dim fDialoog As FileDialog
Dim sBestandsnaam As String
Dim sNaam As String
Dim sPad As String
Dim objBs As Variant




'Stel het werkboek en het pad in.
Set oBoek1 = ThisWorkbook
sPad = oBoek1.Path

'Pas het filedialoog aan en open het
Set fDialoog = Application.FileDialog(msoFileDialogOpen)
With fDialoog
.Title = "Selecteer het in te lezen Werboek"
.ButtonName = "Kopieer bord"
.AllowMultiSelect = False
.Filters.Clear
.Filters.Add "excel", "*.xls*"
.InitialView = msoFileDialogViewDetails
.InitialFileName = sPad
.Show

'Haal bestandsnaam op.
For Each objBs In .SelectedItems
sBestandsnaam = objBs
Next objBs
End With

'open het werkboek
Workbooks.Open sBestandsnaam

'klaarmaken voor kopiëeren
With Application
.EnableEvents = False
.ScreenUpdating = False
.DisplayAlerts = False
End With


'kopieer en plak; oboek2 is het in te lezen bestand (bronbestand)
Set oBoek1 = ActiveWorkbook
Set sh1a = oBoek1.Worksheets("voorcalculatie")
Set sh1b = oBoek2.Worksheets("std")

On Error Resume Next

Dim Dept_Row As Long
Dim Dept_Clm As Long
table1 = sh1a.Range("B10:B20")
'*kolom tabel 1 die aangevuld wordt waarin kolom B de overeenkomende data staat van tabel 2

table2 = sh1b.Range("C10:FO200")
'referende tabelkolom van tabel 2 waarop vergeleken wordt en waaruit data naar tabel 1 wordt gebracht

Dept_Row = sh1a.Range("C10").Row
'startrij van bewerken**
Dept_Clm* = sh1a.Range("C10").Column
'startkolom van bewerken**

For Each cl In table1
sh1a.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(cl, table2, sh1a.Range("C9"), False)



'sh1a.Cells(Dept_Row, Dept_Clm) = Application.WorksheetFunction.VLookup(cl, table2, 2, False)
Dept_Row = Dept_Row + 1


Next cl

MsgBox "Done"

Application.ScreenUpdating = True



End Sub
 
Zonder je code precies te doorgronden, deE regel:

Dept_Row = sh1a.Range("C10").Row
is identiek aan:
Dept_Row = 10

en
Dept_Clm* = sh1a.Range("C10").Column
is gelijk aan
Dept_Clm* = 3

dus je loopje "vult" steeds dezelfde cel (C10)...
 
ha Jan Karel,
tabel 1 kijkt in range B10-B20 en zoekt veverolgens in tabel 2 range C10-FO200 naar de overeenkomende getallen.
het startpunt van invullen begint dan in tabel 1 kolom C beginnend in C10, waarbij C de kolom en 10 de regel is.
op dit moment vult het ook cel C10 niet, het gaat gelijk in de error resume next stap.
 
Wat is er mis met die VLOOKUP direct in tabel 1 zetten als formule?
 
Jan Karel,

dat zou kunnen, maar omdat er meerdere personen met de file moeten werken, en er een heel aantal cellen gevuld moeten worden, leek het mij verstandiger om met een macro te werken.
Kees
 
Mij niet. Hoe werken meerdere personen in de file, tegelijk? Laat dat s.v.p. NIET doen door de werkmap te delen op de ouderwetse manier. ALs je Office 365 hebt, zet de file dan op je OneDrive en laat mensen hem vandaar openen, dan gebruik je de nieuwe opties van Office 365 om samen aan een bestand te werken. Of laat mensen het bestand in OneDrive on-line openen (dus in de browser), dan werkt samen bewerken ook goed en zonder kans op crashes en fouten.
 
Maak svp gebruik van codetages

Code:
For Each objBs In .SelectedItems
sBestandsnaam = objBs
Next objBs
End With

Heeft geen enkel nut

Code:
Set oBoek1 = ThisWorkbook
En als je door het lusje heen bent
Code:
Set oBoek1 = ActiveWorkbook

Plaats de bestandjes even misschien dat iemand er iets van gaat begrijpen.
 
goedenmorgen,
bijgevoegd 2 vereenvoudigde documenten, hopelijk maakt dit wat duidelijk.

tabel 1 zou ik graag aangevuld zien met data uit tabel 2.
omdat tabel 2 mogelijk regelmatig van naam weizigd, wordt het in het eerste deel van de macro het bestand (tabel 2 in dit geval) aangewezen en geopend.
dan wil ik in het zojuist geopende bestand de vertikaalzoek functie uitvoeren waarbij het kolom nummer in tabel 1 gedefinieerd word in regel 9. zie bijgevoegde bestanden.

alvast bedankt voor het meedenken

Bekijk bijlage tabel 1.xlsmBekijk bijlage tabel 2.xlsx
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan