Avatar billede vr_thh Nybegynder
23. februar 2009 - 12:12 Der er 9 kommentarer og
1 løsning

Åbning af access-databasde fra Excvel.

Angående kategori: VB i Excel.
Kan man åbne og arbejde med en access-database fra et vb-scribt i Excel?
Jeg skulle gerne kunne opdaterer data i en accessdatabase fra excel, og det skal køres fra excel.
Brugerne skal ikke mærke berøringen med Access.
Brug af ODBC er udelukket.
Jeg håber, der findes et brubart svar.
Avatar billede supertekst Ekspert
23. februar 2009 - 13:11 #1
Via VBA kan brugergrænsefladen udvikles i Excel, som via en reference kan kommunikere med databasen.

- så ja......
Avatar billede vr_thh Nybegynder
23. februar 2009 - 23:45 #2
Dit svar er for mig ret intetsigender. Det giver mig forhåbning om et brugbart svar, og heller ikke mere. Jeg har brug for noget mere konkret.
Avatar billede supertekst Ekspert
24. februar 2009 - 23:53 #3
Har et eksempel i løbet af i morgen...
Avatar billede vr_thh Nybegynder
25. februar 2009 - 11:34 #4
venter spændt
Avatar billede supertekst Ekspert
25. februar 2009 - 11:39 #5
Send en mail til:

pb (a) supertekst-it DOT dk

så returnerer jeg demo-database + excelfil m/kode
Avatar billede vr_thh Nybegynder
05. marts 2009 - 10:32 #6
Demo modtaget. Et herligt arbejdsgrundlag til at komme videre.
Avatar billede vr_thh Nybegynder
05. marts 2009 - 10:38 #7
Jeg fik selv mine 60 point. Det var superekst, der skulle bhave modtaget dem. Hvordan retter man en sådan fejl.
Avatar billede supertekst Ekspert
05. marts 2009 - 10:46 #8
Du oprettet et nyt spørgsmål:

Point til Supertekst
og refererer til det tidligere spørgsmål nr. 865127
Avatar billede mikker Nybegynder
27. marts 2009 - 12:48 #9
Dejligt når løsningen ikke bliver postet...
Avatar billede supertekst Ekspert
27. marts 2009 - 13:38 #10
Undskyld - hvis....

Rem Database-def.
Public db As database, tbl_budget
Dim flag As Boolean

Dim xSti
Public Sub findSti()
    xSti = ActiveWorkbook.Path
    If Right(xSti, 1) <> "\" Then
        xSti = xSti + "\"
    End If
End Sub
Rem Database - rutiner
Rem ==================
Public Sub LukDb()
    On Error Resume Next
   
    tbl_budget.Close
    db.Close
End Sub
Public Sub åbnDatabase()
    findSti
    Set db = OpenDatabase(xSti + "budget.mdb")
End Sub
Public Sub åbnBudgetTabel()
    åbnDatabase
    Set tbl_budget = db.OpenRecordset("budget")
End Sub
Public Function findAfdeling(afdNr)
On Error GoTo fejl

    åbnBudgetTabel
   
    With tbl_budget
        .Index = "primarykey"
        .Seek "=", afdNr
   
        If Not .NoMatch Then
            findAfdeling = True
        Else
            findAfdeling = False
        End If
    End With
    Exit Function
   
fejl:
    findAfdeling = False
End Function
Rem ================
Rem Excel-funktioner
Rem ================
Private Sub worksheet_Change(ByVal Target As Excel.Range)
Dim aktuelleRække, aktuelleKolonne, aktuelleAfd, aktuelleVærdi, feltnr

On Error Resume Next

Rem Kolonne A - AFDELINGSNUMMER
    If Not Intersect(Target, Range("A:A")) Is Nothing Then
        flag = True
        If findAfdeling(Target.Value) = True Then
            indsætDataFraDB Target.Row
        Else
            If Target.Value <> "" Then
                MsgBox ("AfdNr.:" & CStr(Target.Value) & " kan ikke findes")
            End If
        End If
    Else
Rem Kolonne E - F - G BUDGETTAL
        If Not Intersect(Target, Range("E:E;F:F;G:G")) Is Nothing Then
            If flag = False Then
                aktuelleKolonne = Target.Column
                aktuelleRække = Target.Row
                aktuelleAfd = Cells(aktuelleRække, 1)
                aktuelleVærdi = Cells(aktuelleRække, aktuelleKolonne)
                feltnr = aktuelleKolonne - 1
Rem Klar til opdatering
                If findAfdeling(aktuelleAfd) = True And IsNumeric(aktuelleVærdi) = True Then
                    opdaterFelt feltnr, aktuelleVærdi
                End If
            End If
        End If
    End If
   
End Sub
Private Sub opdaterFelt(feltnr, værdi)
    With tbl_budget
        .Edit
        .Fields(feltnr) = værdi
        .Update
    End With
End Sub
Private Sub indsætDataFraDB(rækkeNr)
    With ActiveSheet
        For x = 1 To 6
            .Cells(rækkeNr, x + 1) = tbl_budget.Fields(x)
        Next x
    End With
   
    flag = False
End Sub
Private Sub Worksheet_Deactivate()
    LukDb
End Sub
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
Kurser inden for grundlæggende programmering

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