Avatar billede per2edb Ekspert
20. juli 2025 - 15:13 Der er 29 kommentarer og
2 løsninger

Excel kalder en Access app

I en Excel app har jeg en dblClick event der kalder en Access app vor der tilgås en form
Det fejler. DIM giver fejl !!!!!!!
Kan i hjælpe

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim strPath As String, stAppName As String    <Giver fejl !!!!
strPath = CurrentProject.Path
  stAppName = strPath & "\(Access App Navn)"

  With CreateObject("Access.Application")
                .Application.DoCmd.OpenForm (stAppName)
              ..Run "setvars", 2, Nz(xxxx, 0)
              .Visible = True
              .Application.Run "Macro1"           
      End With
end sub
Avatar billede Gustav Ekspert
20. juli 2025 - 15:41 #1
Prøv med separate linjer.
Og undlad at kopiere; slet teksten og genskriv linjerne - det fjerner eventuelle skjulte tegn, hvilket VBE kan have en kedelig evne til at gemme på.
Avatar billede per2edb Ekspert
20. juli 2025 - 17:07 #2
Sorry  Separate linier  -- Jeg forstår ikke
Avatar billede Gustav Ekspert
20. juli 2025 - 19:06 #3
Én Dim per linje:
Dim strPath As String
Dim stAppName As String
Avatar billede per2edb Ekspert
20. juli 2025 - 20:35 #4
mange tak. Nu virker DIM
Men vba i excel er en udfordring

strPath = CurrentProject.Path
og
  .Application.DoCmd.OpenForm (stAppName)
Virker heller ikke

Kan du hjælpe
Avatar billede Gustav Ekspert
21. juli 2025 - 09:30 #5
Hvilke værdier får du, og hvorfor skulle de være forkerte?
Der skal ikke være to punktummer foran Run.
Avatar billede per2edb Ekspert
21. juli 2025 - 10:21 #6
strPath = CurrentProject.Path

Giver Run-time error 424  object required
Avatar billede Gustav Ekspert
21. juli 2025 - 10:44 #7
Det er nok samme problem som med Dim'erne.
Slet al koden og genskriv den uden at kopiere noget af det gamle.
Avatar billede erikjacobsen Ekspert
21. juli 2025 - 11:35 #8
CurrentProject lyder som noget fra Access.

Umiddelbart ved Excel vel ikke hvor din Access database er. Måske skal du bare skrive den fulde sti selv.
Avatar billede Gustav Ekspert
21. juli 2025 - 11:58 #9
Erik har ret. Du er i Excel, så prøv med:
strPath = ThisWorkbook.Path
Avatar billede per2edb Ekspert
21. juli 2025 - 20:52 #10
strPath = ThisWorkbook.Path  <=  Tak det virker

Nu har jeg kun at aktivere den kaldende form:

Fejl 2046    Åben formular er ikke tilgængelig

stAppName = strPath & "\(Access App Navn)"
  With CreateObject("Access.Application")
                .Application.DoCmd.OpenForm (stAppName)  <== Fejl 2046                                           
              ..Run "setvars", 2, Nz(xxxx, 0)
              .Visible = True
              .Application.Run "Macro1"         
      End With
end sub
Avatar billede erikjacobsen Ekspert
21. juli 2025 - 22:04 #11
Jeg formoder at (Access App Navn) skal erstattes af navnet på din Access applikation. Og så skal du yderligere være sikker på at den så også ligger i det du kalder strPath.

Det er rigtig nok at regnearket ligger der, for det spørger du om, men vi kan ikke vide om din Access applikation også ligger i samme mappe.
Avatar billede Gustav Ekspert
22. juli 2025 - 08:33 #12
Din syntax ser meget forkert ud, og Nz findes ikke i Excel.
Justér din Macro1 til at gøre, hvad der skal gøres, og kald så den fra Excel:
Sub OpenAccessAndRunMacro()

    Dim AccessApp  As Object
    Dim strPath    As String
    Dim strAppName  As String

    strPath = ThisWorkbook.Path
    strAppName = strPath & "\(Access App Navn)"

    Set AccessApp = CreateObject("Access.Application")

    AccessApp.OpenCurrentDatabase strAppName
    AccessApp.Visible = True
   
    AccessApp.Run "Macro1"

    AccessApp.Quit
    Set AccessApp = Nothing

End Sub
Avatar billede per2edb Ekspert
22. juli 2025 - 08:41 #13
stAppName er stien til Access appen
Access appen og Excel appen ligger i samme mappe
Access appen kalder Excell appen
Ved et dobbel klik i arket returneres der til Access appen med en variabel fra rækken

Fejlen opstår her:
.Application.DoCmd.OpenForm (stAppName)  <== Fejl 2046   

Denne fejl opstår selvom Access Appen er åben (Hvad den er) eller lukket

Jeg er ikke Excel kyndig men var det i Access var DoCmd.OpenForm (stAppName) ok
Nu er det Excel og kaldet er retur til Access appen - kan i hjælpe med dette kald
Avatar billede erikjacobsen Ekspert
22. juli 2025 - 08:59 #14
Har du en fejltekst ud ober 2046? Man siger derude at der bør være en tekst i retning af "The command or action '....' isn't available now"  hvor prikkerne siger mere præcist hvad der er galt - hvilken kommando den ikke lige kan klare.
Avatar billede per2edb Ekspert
22. juli 2025 - 09:20 #15
Run time error 2046
Kommandoen eller handlingen 'ÅbenFormular' er ikke tilgængelig nu

Fra Access til Excel har jeg dette der virker.
.Application.Workbooks.Open (stAppName)

Det jeg søger må vel være noget i denne retning hvor xxxxx er ?????
.Application.XXXXXX.Open (stAppName)
Avatar billede Gustav Ekspert
22. juli 2025 - 09:23 #16
Du kan kalde din setvars funktion således før makroen:
    AccessApp.Run "setvars", 2, AccessApp.Nz(xxxx, 0)
    AccessApp.Run "Macro1"
Avatar billede per2edb Ekspert
22. juli 2025 - 11:55 #17
Desværre Fejl i    AccessApp.Run "Kald_Gantt_Pro_Lev_Planer"

Run Time error 7952 Funktionskaldet er ugyldigt

Når jeg i ERP.accdb klikker Macroen "Kald_Gantt_Pro_Lev_Planer" virker denne

Her er alle koder uredigeret

    Dim AccessApp  As Object
    Dim strPath    As String
    Dim strAppName  As String

    strPath = ThisWorkbook.Path
    strAppName = strPath & "\ERP.accdb"

    Set AccessApp = CreateObject("Access.Application")

    AccessApp.OpenCurrentDatabase strAppName
    AccessApp.Visible = True
   
    AccessApp.Run "Kald_Gantt_Pro_Lev_Planer"

    AccessApp.Quit
    Set AccessApp = Nothing
Avatar billede Gustav Ekspert
22. juli 2025 - 12:15 #18
Hvis "Kald_Gantt_Pro_Lev_Planer" er en Sub, så prøv at lave den om til en Function.

Hvis den er en rigtig makro, så prøv at oprette en funktion, der kalder makroen (eller gør det samme som makroen) og lad så din kode kalde funktionen.
Avatar billede per2edb Ekspert
22. juli 2025 - 13:53 #19
Desværre nej


Run time error
Funktionskaldet er ugyldigt


I Excel:
AccessApp.Run "Kald_Gantt_Pro_Lev_Planer"

I Access:
Function Kald_Gantt_Pro_Lev_Planer()
    MsgBox "Stop"
End Function
Avatar billede Gustav Ekspert
22. juli 2025 - 14:33 #20
Svært at sige. Det fungerer fint her.
Prøv eventuelt at oprette en ny database og indsæt din lille funktion i den. Det skal virke.
Avatar billede per2edb Ekspert
22. juli 2025 - 14:46 #21
Du skriver

strAppName = strPath & "\(Access App Navn)"

jeg har
strAppName = strPath & "\ERP.accdb"  <= ???

Det er som om den ikke kommer ind i programmet - Kun til programmet
Avatar billede Gustav Ekspert
22. juli 2025 - 14:59 #22
Nej, min hedder bare Test, så det var:
strAppName = strPath & "\Test.accdb"
Avatar billede per2edb Ekspert
22. juli 2025 - 18:34 #23
Min fejl er at det kaldende Access app, her ERP.accdb , er åbent
Lukker jeg det virker det

Men jeg ønsker ikke at lukke ERP.accdb

  AccessApp.Run "Kald_Gantt_Pro_Lev_Planer"  ønskes derfor erstattet med et kald der virker med ERP.accdb åben

Jeg har prøvet med AccessApp.DoCmd  men det virker ikke
Avatar billede Gustav Ekspert
23. juli 2025 - 09:42 #24
Du må så undersøge først, om den er åben:
Public Sub CallAccessFunction()

    Dim AccessApp          As Object
    Dim strPath            As String
    Dim strAppName          As String
    Dim DoClose            As Boolean
    Dim ExistingInstance    As Boolean

    strPath = ThisWorkbook.Path
    strAppName = strPath & "\Test.accdb"
   
    On Error Resume Next
    ' Brug en eventuel allerede åbnet Access instance.
    Set AccessApp = GetObject(, "Access.Application")
    ExistingInstance = (Err.Number = 0)
    On Error GoTo 0

    If ExistingInstance Then
        ' Se om det er den søgte database, der er åben.
        If LCase(AccessApp.CurrentDb.Name) = LCase(strAppName) Then
            ' OK.
        Else
            ' Åbn en ny instance med den søgte database.
            Set AccessApp = CreateObject("Access.Application")
            AccessApp.OpenCurrentDatabase strAppName
            AccessApp.Visible = True
            DoClose = True
        End If
    Else
        ' Ingen instance er åben, så opret en.
        Set AccessApp = CreateObject("Access.Application")
        AccessApp.OpenCurrentDatabase strAppName
        AccessApp.Visible = True
        ' Luk den efter brug.
        DoClose = True
    End If

    AccessApp.Run "Kald_Gantt_Pro_Lev_Planer"

    If DoClose Then
        AccessApp.Quit
    End If
   
    Set AccessApp = Nothing

End Sub
Avatar billede per2edb Ekspert
23. juli 2025 - 14:19 #25
Tak det prøver jeg
Avatar billede per2edb Ekspert
23. juli 2025 - 17:32 #26
Hura det virker
1000 tak for hjælpen

Har du en enkel kode der bringer det kaldte Kald_Gantt_Pro_Lev_Planer i forgrunden
Her prøvet med

AccessApp.Visible = false
AccessApp.Visible = True
Avatar billede Gustav Ekspert
24. juli 2025 - 10:00 #27
Hvis du kender titlen (navnet øverst i bjælken) på Access-programmet, er det meget enkelt:
    '  Bring Access applikation i front.
    AppActivate "ERP"
    AccessApp.Run "Kald_Gantt_Pro_Lev_Planer"
Ellers så kig her:
https://www.devhut.net/vba-find-a-window-by-its-title-and-bring-it-to-the-front/
Avatar billede per2edb Ekspert
25. juli 2025 - 15:45 #28
Der var jeg for hurtig
Desværre - Har læst og prøvet alt med AppActivate - men nej

I et modul i Access har jeg
DoCmd.OpenForm "Ordre_Åbne_Status_PopUp"
 
Skal have "Ordre_Åbne_Status_PopUp" i front foran Excel, der  er det kaldende program

Ingen af disse virker:
AppActivate "Ordre_Åbne_Status_PopUp"
DoCmd.RunCommand acCmdBringToFront
 
1.  Dim frmX As Variant
2.  Set frmX = New Ordre_Åbne_Status_PopUp
  frmX.SetFocus
  3.  DoCmd.RunCommand acCmdBringToFront

Kan du hjælpe
Avatar billede Gustav Ekspert
25. juli 2025 - 16:06 #29
AppActive virker kun på hele applikationen, ikke på en bestemt formular.
Så du må bruge:
AppActivate NavnetPåDinAccessApplikation
Hvis ikke det dur, må du ty til Daniels artikel om brug af API-kaldene.
Avatar billede per2edb Ekspert
06. august 2025 - 08:58 #30
Hej Gustav og Erik
Jeg har under visual Basic oprettet et spørgsmål om double Click event i MS Project men ingen svar

Kan i hjælpe med koderne til oprettelse af en double click event i MS Project
Avatar billede Gustav Ekspert
06. august 2025 - 11:13 #31
Beklager - kender intet til MS Project.
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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