Avatar billede christina77 Nybegynder
24. marts 2010 - 09:21 Der er 2 kommentarer

Hent Menu opsætning

Jeg har et Excel-AddInn, som skal hente en menu-opsætning i et regneark og oprette en menu i Excel når programmet åbnes. Makroen HentMenuOpsætning virker desværre ikke. Jeg får den fejlmeddelelse, som er angivet nederst i koden.

Det er et kursus-eksempel til Excel 2003 jeg har fundet frem, så jeg tænker at der måske er noget med "provider" eller "extended properties" der skal ændres i koden. Det har jeg ikke en pind forstand på...


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 & "\xlMenuTable.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 "Menu Opsætningen er tom, kontakt de rapporteringsansvarlige", vbCritical
    End If
    ' Luk datasættet
    rsdata.Close
    Set rsdata = Nothing
Exit Sub
errhand:
        MsgBox "Seneste Menu Opsætning blev ikke fundet, kontakt de rapporteringsansvarlige", vbCritical
End Sub
Avatar billede supertekst Ekspert
24. marts 2010 - 09:39 #1
Hvis muligt må du gerne sende de nødvendige filer - så skal jeg gerne prøve - @-adr. under profil.
Avatar billede christina77 Nybegynder
24. marts 2010 - 09:42 #2
De er på vej...
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