Dim xlApp As Excel.Application
Dim xlWBk As Excel.Workbook
Dim xlWSht As Excel.Worksheet
Dim xlRng As Excel.Range
Dim db As DAO.Database
Dim rst As DAO.Recordset
Dim fld As DAO.Field
'------------------------------------------------------------------------------
'Query Personen openen
'------------------------------------------------------------------------------
Set db = CurrentDb()
Set rst = db.OpenRecordset("qPersonen")
'------------------------------------------------------------------------------
'Excel sessie openen
'------------------------------------------------------------------------------
sActie = "Openen van Excel sessie..."
DoCmd.Echo False, "Bezig met: " & sActie
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
sActie = "Openen van Werkboek Aanvraagformulier Producten.xls"
DoCmd.Echo False, "Bezig met: " & sActie
Set xlWBk = xlApp.Workbooks.Open("Aanvraagformulier Producten.xls", True)
Set xlWSht = xlWBk.Worksheets("Medewerkers")
With xlWSht
.Activate
.Unprotect Password:="x"
.Visible = xlSheetVisible
End With
'------------------------------------------------------------------------------
'Handelingen in Excel uitvoeren
'------------------------------------------------------------------------------
sActie = "Vervangen van Medewerkers in Aanvraagformulier Producten.xls"
DoCmd.Echo False, "Bezig met: " & sActie
i = 1
Set xlRng = xlWSht.Cells(1, i)
xlRng.CurrentRegion.Delete
On Error Resume Next
xlWSht.Range("A1").Select
xlRng.Select
'------------------------------------------------------------------------------
'Veldnamen uit de query in het werkblad plaatsen
'------------------------------------------------------------------------------
For Each fld In rst.Fields
Set xlRng = xlWSht.Cells(1, i)
xlRng.Value = fld.Name
i = i + 1
Next
'------------------------------------------------------------------------------
'Complete Recordset (tabel) naar A2 in het werkblad kopieëren
'------------------------------------------------------------------------------
rst.MoveFirst
xlWSht.Range("A2").CopyFromRecordset rst
'------------------------------------------------------------------------------
'Namen van de tabellen aanpassen
'------------------------------------------------------------------------------
xlWSht.Activate
sActie = "Vervangen van Naamreeksen in Aanvraagformulier Producten.xls"
DoCmd.Echo False, "Bezig met: " & sActie
Set xlRng = xlWSht.Cells(1, 1)
xlRng.Activate
xlRng.CurrentRegion.Select
sAdres = Selection.Address
mReeks = Split(sAdres, ":")
sReeks = "=" & ActiveSheet.Name & "!$A$2:" & mReeks(UBound(mReeks))
sReeks = "=" & ActiveSheet.Name & "!$A$2:" & mReeks(UBound(mReeks))
y = InStr(2, mReeks(UBound(mReeks)), "$")
tmp = Mid(mReeks(UBound(mReeks)), y + 1, Len(mReeks(UBound(mReeks))) - y)
'De reeksen 'Medewerkers' en 'Zoeklijst_Medewerkers' vervangen...
On Error Resume Next
ActiveWorkbook.Names("Medewerkers").Delete
ActiveWorkbook.Names.Add "Medewerkers", sReeks
'------------------------------------------------------------------------------
'Excel bestand sluiten en opslaan
'------------------------------------------------------------------------------
With xlApp.Application
.ScreenUpdating = True
.EnableEvents = True
End With
sActie = "Opslaan en sluiten van werkboek Aanvraagformulier Producten.xls"
DoCmd.Echo False, "Bezig met: " & sActie
With xlWSht
.Activate
.Protect Password:="x", UserInterfaceOnly:=False
.Visible = xlSheetHidden
End With
xlWBk.Close SaveChanges:=True
sActie = "Afsluiten van Excel..."
DoCmd.Echo False, "Bezig met: " & sActie
For Each xlWBk In Workbooks
xlWBk.Close SaveChanges:=True
Next
'------------------------------------------------------------------------------
'Excel sessie sluiten
'------------------------------------------------------------------------------
On Error Resume Next
xlApp.Application.Quit
xlApp.Quit
Set xlRng = Nothing
Set xlWSht = Nothing
Set xlWBk = Nothing
Set xlApp = Nothing