Avatar billede Slettet bruger
13. april 2010 - 08:18 Der er 7 kommentarer og
1 løsning

Fejl i makro

Hej

Jeg har nedenstående makro i et regneark. Der kommer en fejlmeddelelse på linjen "Dim rsdata As ADODB.Recordset":

"Compile Error:  User-defined type not defined."

Hvad er der galt?




Public Sub HentMenuOpsætning()
' Denne makro henter opsætningen til menuen i filen "xlMenuTable.xls". Derved _
kan opsætningen af menuen opdateres fra centralt hold.

    Dim rsdata As ADODB.Recordset
    Dim szConnect As String
    Dim szSQL As String
    Dim objField As ADODB.Field
    Dim lOffset As Long
    Dim ReportPath As String
   
    ' Hvis der opstår en fejl, kommer der en fejlmeddelelse og makroen afsluttes
    On Error GoTo errhand
    ' Hent stien til "xlMenuTable.xls" i nuværende Menutabel. _
    Denne sti kan så udskiftes med "Thisworkbook.Path" nedenfor.
    ReportPath = shMenuTable.Cells.Find(What:="ReportPath").Offset(1).Value
    ' tilføj en connection string.
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & ReportPath & "\Menuopsætning Salg.xlsx;" & _
                "Extended Properties=Excel 8.0;"
    ' tilføj en SQL sætning.
    szSQL = "select * from [MenuTable$]"
    ' tilføj et datasæt (recordset) object og kører SQL forespørgslen.
    Set rsdata = New ADODB.Recordset
    rsdata.Open szSQL, szConnect, adOpenForwardOnly, _
                adLockReadOnly, adCmdText
    ' check om datasættet indeholder data.
    If Not rsdata.EOF Then
      shMenuTable.Cells.Delete
        ' tilføj feltnavne til menutabelarket.
        With shMenuTable.Range("A1")
            For Each objField In rsdata.Fields
                .Offset(0, lOffset).Value = objField.Name
                lOffset = lOffset + 1
            Next objField
            .Resize(1, rsdata.Fields.Count).Font.Bold = True
        End With
        ' indsæt datasættet i arket MenuTable.
        shMenuTable.Range("A2").CopyFromRecordset rsdata
    Else
        MsgBox "Menuopsætningen er tom. Kontakt regnskabsafdelingen", vbCritical
    End If
    ' Luk datasættet
    rsdata.Close
    Set rsdata = Nothing
Exit Sub
errhand:
        MsgBox "Menuopsætning blev ikke fundet. Kontakt regnskabsafdelingen.", vbCritical
End Sub
Avatar billede jokerper Nybegynder
13. april 2010 - 08:38 #1
Er det ikke under tools - reference - du skal vist lige angive referencen til ADODB.Recordset

Måske noget DAO
Avatar billede Slettet bruger
13. april 2010 - 08:53 #2
Det virker når jeg tilføjer
"Microsoft ActiveX Data Object 2.8 Library".

Men når jeg lukker regnearket og åbner det igen, så forsvinder fluebenet i ovenstående reference, og så virker makroen igen ikke.
Avatar billede jokerper Nybegynder
13. april 2010 - 09:07 #3
Prøv Microsoft ActiveX data Objects 2.5, kunne jeg lige læse mig til.
Avatar billede Slettet bruger
13. april 2010 - 10:23 #4
Nu har jeg fået det til at virke.

Men til gengæld er der opstået et andet problem.
Koden ligger i en Add-in. Hver gang jeg åbner Excel kommer følgende fejlmeddelelse:

"Menuopsætning blev ikke fundet. Kontakt regnskabsafdelingen."

Jeg kan ikke regne ud hvor fejlen ligger.
Avatar billede jokerper Nybegynder
13. april 2010 - 10:37 #5
Så tror jeg du skal oprette spm i under database.

Da det nok har med din forespørgsel at gøre.
Avatar billede Slettet bruger
13. april 2010 - 10:40 #6
OK. Tak for hjælpen!
Avatar billede jokerper Nybegynder
13. april 2010 - 10:46 #7
Jeg tror det er denne her der fejler:

    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & ReportPath & "\Menuopsætning Salg.xlsx;" & _
                "Extended Properties=Excel 8.0;"

Altså path til filen.
Avatar billede jokerper Nybegynder
13. april 2010 - 10:49 #8
' Hent stien til "xlMenuTable.xls" i nuværende Menutabel. _
    Denne sti kan så udskiftes med "Thisworkbook.Path" nedenfor.
    ReportPath = shMenuTable.Cells.Find(What:="ReportPath").Offset(1).Value
    ' tilføj en connection string.
    szConnect = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                "Data Source=" & ReportPath & "\Menuopsætning Salg.xlsx;" & _
                "Extended Properties=Excel 8.0;"
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester