HELP HELP!!!! Koppeling gegevensbestand aan formulieren door middel van VBA

Status
Niet open voor verdere reacties.

jljadams

Gebruiker
Lid geworden
21 mei 2008
Berichten
10
Beste forumleden,

Ik ben werkzaam op een school en voor het afnemen van praktijktoetsen moet ik regelmatig gegevens uit klassenlijsten van studenten koppelen aan beoordelingsfomulieren.
De klassenlijsten komen uit het schoolregistratiesysteem. De beoordelingslijsten krijgen we van een landelijke organisatie. In het verleden deed ik dat altijd met de hand, maar dat kost me steeds meer tijd, omdat we nogal wat klassen hebben en verschillende beoordelingsformulieren. Daarom heb ik het een en ander geautomatiseerd. Dat is slechts ten dele gelukt, omdat mijn kennis van VBA onvoldoende is.
Voor elke student op de klasselijst moet een beoordelingsformulier gemaakt worden en per naam opgeslagen in de map waarin het bestand klasselijst en het beoordelingsformulier zich bevindt. Nu heb ik dat gedaan middels een aantal losse macro's in het bestand klasselijst.xlsm. Deze bevat namelijk de macro Invullen en van daar uit worden de macro's Student_1, Student_2, Student_3, enz. uitgevoerd. De macro Invullen werkt wel, maar
1. Kan dit ook door middel van vba-code?
2. De macro eindigt altijd met een foutcode. Is deze er uit te halen. Het laatste beoordelingsformulier moet met de laatste studentgegevens uit de lijst opgeslagen worden en vervolgens mag het beoordelingsformulier afgesloten en de macro beëindigt worden.

Wie kan mij helpen?

Al vast bedankt voor je hulp.

Met vriendelijke groet,
Jan:eek:
 

Bijlagen

  • Beoordelingsformulier 1.xlsm
    125,5 KB · Weergaven: 30
  • Klasselijst.xlsm
    45,9 KB · Weergaven: 29
Zoiets? Wel even de variabelen c00 en c01 aanpassen naar de juiste locatie.

Code:
Sub VenA()
  c00 = "E:\Temp\" & Range("M1") & ".xlsm"
  c01 = "E:\Temp\Temp\"
  If Dir(c00) <> "" Then
  Application.ScreenUpdating = 0
    ar = Cells(1).CurrentRegion.Resize(, 13)
    With Workbooks.Open(c00)
      For j = 2 To UBound(ar)
        If Len(ar(j, 4)) > 2 Then
          .Sheets("Voorblad").Cells(17, 2).Resize(5) = Application.Transpose(Array(ar(j, 4), ar(j, 2), ar(3, 13), ar(4, 13), ar(4, 13)))
          .SaveAs c01 & ar(j, 4) & ".xlsm"
        End If
      Next j
      .Close 0
    End With
  End If
End Sub

Nb. Je kan beter de samengevoegde cellen weghalen. Krijg je meestal problemen me in combinatie met VBA.
 
Laatst bewerkt:
Waar plaats ik de vba-code?

Bedankt voor de snelle reactie.
Ik begrijp niet waar ik de vba code precies moet plaatsen. Ik kan alleen het bestand klasselijst aanpassen. De beoordelingsformulieren krijgen wij van de landelijke organisatie.

Met vriendelijke groet,

Jan
 
Zet de code in Module 1. Alle ander modules kan je verwijderen.
 
De module werkt wel, maar nog niet goed

Hallo VenA,

Heel hartelijk dank. Je hebt me echt vooruit geholpen!!
De module werkt zo, alleen wordt nog niet de datum en beoordelaar 2 overgenomen/ingevuld in het beoordelingsformulier. Wat moet ik nog wijzigen?
 
Code:
.Sheets("Voorblad").Cells([COLOR="#FF0000"]16[/COLOR], 2).Resize([COLOR="#FF0000"]6[/COLOR]) = Application.Transpose(Array[COLOR="#FF0000"](ar(2,13)[/COLOR],ar(j, 4), ar(j, 2), ar(3, 13), ar(4, 13), ar([COLOR="#FF0000"]5[/COLOR], 13)))
 
Laatst bewerkt:
Perfect!

Werkt nu perfect. Grandioos! Gaat mij veel tijd besparen. Dank je wel!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan