Hallo beste VBA experts,
M'n tweede vraag alweer vandaag, erg hoor
Maar terzake.
Ik heb een vba code gemaakt binnen excel om gegevens te importeren vanuit access. Dit allemaal zou wel goed moeten gaan, maar omdat ik specefieke gegevens uit één tabel wil hebben moet ik een filter maken.
Nu geeft vba steeds een foutmelding weer:
Fout 3251 tijdens uitvoering:
de bewerking is niet geschikt voor dit type object.
dit is de code:
Kan iemand mij vertellen wat ik fout heb gedaan??
Waar het fout gaat heb ik een opmerking gegeven met een pijl.
Alvast bedankt!!
Snabugje
M'n tweede vraag alweer vandaag, erg hoor
Maar terzake.
Ik heb een vba code gemaakt binnen excel om gegevens te importeren vanuit access. Dit allemaal zou wel goed moeten gaan, maar omdat ik specefieke gegevens uit één tabel wil hebben moet ik een filter maken.
Nu geeft vba steeds een foutmelding weer:
Fout 3251 tijdens uitvoering:
de bewerking is niet geschikt voor dit type object.
dit is de code:
Code:
Sub Import_Access()
Dim a As Integer
Dim b As Integer
Dim db As DAO.Database
Dim einde As Date
Dim filter As String
Dim jaar As String
Dim maand As String
Dim maandnmr As Integer
Dim rst As DAO.Recordset
Dim rstf As DAO.Recordset
Dim sht As Worksheet
Dim start As Date
Dim str As String
b = 1
[COLOR="green"]'controleren of 'maand' en 'jaar' zijn ingevuld[/COLOR]
If Range("F12") = Empty Or Range("F14") = Empty Then
MsgBox "Vul eerst 'Jaar' en 'Maand' in s.v.p.", vbInformation, "Let Op!"
Exit Sub
End If
jaar = Range("F12")
maandnmr = Range("G9")
maand = Range("F14")
[COLOR="green"]'controleren of er al een tabblad bestaat met deze datum[/COLOR]
For Each sht In Excel.Sheets
Debug.Print Excel.Sheets(b).Name
If Excel.Sheets(b).Name = maand & " " & jaar Then
MsgBox "U heeft al een rapport van " & maand & " " & jaar, vbInformation, "Let Op!"
Exit Sub
End If
b = b + 1
Next
[COLOR="green"]'nieuw tabblad aanmaken[/COLOR]
b = Excel.Worksheets.Count
Excel.Sheets.Add , Excel.Sheets(b)
Excel.Sheets(b + 1).Name = maand & " " & jaar
[COLOR="green"]'naam voor dropdownmenu aanmaken[/COLOR]
ThisWorkbook.Sheets("dropdown").Activate
Range("A1").Select
If Selection = Empty Then
Selection.Value = maand & " " & jaar
ElseIf Range("A2") = Empty Then
Range("A2").Value = maand & " " & jaar
Else
Range("A1").Select
b = Range(Selection, Selection.End(xlDown)).Count
Range("A" & CStr(b + 1)).Value = maand & " " & jaar
End If
Set db = DBEngine.Workspaces(0).OpenDatabase("Z:\2008\project administratie\Gce Administratie V4_be.accdb")
Set rstf = db.OpenRecordset("ExportTabel-Maandrapp")
[COLOR="green"]'filter maken voor recordset[/COLOR]
start = DateSerial(jaar, maandnmr, 1)
einde = DateSerial(jaar, maandnmr + 1, 0)
filter = BuildCriteria("datum", dbDate, ">=" & start & " and <=" & einde)
rstf.filter = filter [COLOR="green"]'<---- hier krijg ik: Fout 3251 tijdens uitvoering[/COLOR]
Set rst = rstf.OpenRecordset [COLOR="green"] 'De bewerking is niet geschikt voor dit type object[/COLOR]
b = 1
[COLOR="green"]'aantal records tellen voor export[/COLOR]
With rst
.MoveLast
.MoveFirst
a = .RecordCount
End With
[COLOR="green"]'bij geen records procedure beëindigen[/COLOR]
If a < 1 Then
MsgBox "Geen gegevens gevonden van " & maand & " " & jaar, vbCritical, "Fail"
Exit Sub
End If
[COLOR="green"]'gegevens uit recordset plaatsen in laatst gemaakte tabblad[/COLOR]
ThisWorkbook.Sheets(maand & " " & jaar).Activate
With ActiveSheet
For a = 1 To 10 'er worden maar 10 records geplaatst als test
.Range("A" & CStr(b)) = rst!ordernummer
.Range("B" & CStr(b)) = rst!uren
.Range("C" & CStr(b)) = rst!minuten
If Not IsNull(rst![uren bewerkt]) Then
.Range("D" & CStr(b)) = rst![uren bewerkt]
Else
.Range("D" & CStr(b)) = 0
End If
If Not IsNull(rst![uren bewerkt]) Then
.Range("E" & CStr(b)) = rst![minuten bewerkt]
Else
.Range("E" & CStr(b)) = 0
End If
rst.MoveNext
b = b + 1
Next a
End With
End Sub
Kan iemand mij vertellen wat ik fout heb gedaan??
Waar het fout gaat heb ik een opmerking gegeven met een pijl.
Alvast bedankt!!
Snabugje