Avatar billede ksor Mester
16. april 2023 - 10:12 Der er 10 kommentarer

Excel VBA og Firefox

Jeg bruger Excel VBA til at vise en side fra Rigsarkivet når jeg klikker på en Shape - her er med VBA koden:

Public Sub findLinkTilVielsen(Sh As Shape)
    If Trim(Sh.Hyperlink.Address) = "" Then
        visFejlMeddelelse "Der er ikke angivet noget link til vielsen !"
    Else
        On Error GoTo notOK
        Sh.Hyperlink.Follow NewWindow:=True
        GoTo goAhead
notOK:  On Error GoTo 0
        visFejlMeddelelse "Linket er defekt !"
goAhead:
    End If
End Sub

Jeg har andre steder i VBA-koden, hvor jeg åbner en URL med VBA UDEN problemer, men når jeg bruger ovenstående får jeg følgende meddelelse fra FireFox, men KUN når Firefox IKKE kører i forvejen:

En lille dialogboks med besked om, at Firefox kun kan startes i Fejlsikret mode - og så er der en knap til NULSTIL Firefox. Hvis jeg vælger at kører videre, kører det meget, meget langsomt.

Det må være en eller anden indstilling I firefox, tror jeg !

Men hvad er der galt og hvordanr ettes det ?
Avatar billede Slettet bruger
16. april 2023 - 11:30 #1
Jeg tror, problemet er, at Firefox forsøger at åbne linket i en ny forekomst af browseren, men det kan den ikke, fordi Firefox ikke allerede kører. For at løse dette kan du tilføje følgende kodelinje til begyndelsen af din VBA-makro:
---- kopier ikke dette linie -----


Set FirefoxApp = CreateObject("Firefox.Application")


---- kopier ikke dette linie -----



Dette vil oprette en ny forekomst af Firefox-browseren, og derefter vil din makro være i stand til at åbne linket i den forekomst.

Her er den komplette VBA-makro med den nye kodelinje tilføjet:
---- kopier ikke dette linie -----

Public Sub findLinkToVielsen(Sh As Shape)

    ' Create a new instance of the Firefox browser
    Set FirefoxApp = CreateObject("Firefox.Application")

    ' If the link is empty, display an error message
    If Trim(Sh.Hyperlink.Address) = "" Then
        showErrorMessage "No link to the wedding has been specified!"
        Exit Sub
    End If

    ' Open the link in a new window
    FirefoxApp.Navigate2 Sh.Hyperlink.Address, 0, NewWindow:=True

End Sub


---- kopier ikke dette linie -----

Se om det virker med den. 🤓👍 Lad mig se om der er andet
Avatar billede Slettet bruger
16. april 2023 - 11:37 #2
Dette problem kan skyldes, at Firefox er konfigureret til at starte i fejlsikret tilstand, når den åbnes fra en ekstern applikation som Excel VBA. Dette kan være en sikkerhedsforanstaltning i Firefox for at forhindre potentielt skadelige handlinger fra eksterne applikationer.

For at løse dette problem kan du prøve følgende:

    Start Firefox manuelt og sørg for, at det kører normalt uden nogen fejlmeddelelser.

    Gå til Firefox-indstillinger ved at klikke på de tre vandrette linjer øverst til højre i Firefox-vinduet og vælg "Indstillinger".

    I indstillingerne skal du gå til fanen "Generelt".

    Rul ned til afsnittet "Start" og sørg for, at indstillingen "Når Firefox starter" er sat til "Start normalt".

    Luk Firefox og prøv derefter at køre din VBA-kode igen fra Excel og se om problemet er løst.

Hvis dette ikke løser problemet, kan du også prøve at opdatere Firefox til den nyeste version, da der kan være kompatibilitetsproblemer med ældre versioner af Firefox og Excel VBA. Du kan også overveje at kontakte Mozillas supportteam eller Excel VBA-fællesskabet for yderligere assistance med dette problem.
Avatar billede ksor Mester
16. april 2023 - 14:12 #3
Jeg har netop opdateret til Verson 112,0 - samme problem !

Jeg har ikke noget "Start" under generelt - jeg har "Opstart", men der er ikke noget !"Når Firefox starter" er sat til "Start normalt"! !

nu prover jeg at tilrette VBA-koden
Avatar billede ksor Mester
16. april 2023 - 14:30 #4
Jeg kan ikke definere FireFox.Application

Jeg synes ikke jeg kan finde nogen "Reference", som har med FIreFox at gøre !

What to do ?
Avatar billede Slettet bruger
16. april 2023 - 14:41 #5
Jeg tror, jeg ved, hvad problemet er. Firefox er ikke et COM-baseret program, så du kan ikke bruge funktionen CreateObject() til at oprette en forekomst af Firefox-browseren. I stedet skal du bruge ShellExecute()-funktionen.

ShellExecute()-funktionen er en Windows API-funktion, der giver dig mulighed for at starte programmer og filer fra din VBA-kode. Syntaksen for funktionen ShellExecute() er som følger:
--------

ShellExecute(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShow As Long)

--------
hWnd-parameteren er håndtaget til det vindue, der starter programmet. Parameteren lpOperation er en streng, der specificerer den operation, du vil udføre. Parameteren lpFile er stien og filnavnet på den fil, du vil starte. Parameteren lpParameters er en streng, der indeholder alle parametre, som du vil videregive til applikationen. Parameteren lpDirectory er den mappe, du vil starte applikationen i. nShow-parameteren er et heltal, der angiver, hvordan du ønsker, at applikationen skal vises.

For at åbne et link i Firefox ved hjælp af ShellExecute()-funktionen, kan du bruge følgende kode:
--------

Sub OpenLinkInFirefox(ByVal link As String)

    ' Launch Firefox and open the specified link
    ShellExecute 0, "open", link, "", "", vbNormalFocus

End Sub

--------
Denne kode starter Firefox og åbner det angivne link i et nyt vindue.
Avatar billede Slettet bruger
16. april 2023 - 14:44 #6
Alternativt for problemet med at bruge Excel VBA til at åbne en side fra Rigsarkivet i Firefox. Jeg har fundet nogle mulige løsninger på internettet, som du kan prøve.

En mulighed er at bruge Selenium VBA, som er et værktøj til at automatisere webbrowsere med VBA-kode. Du kan downloade og installere Selenium VBA fra ³ og derefter bruge det til at styre Firefox fra Excel. Du kan også optage dine handlinger i Firefox med et plugin kaldet Selenium IDE og oversætte dem til VBA med de medfølgende formaterere¹².

En anden mulighed er at bruge musens koordinater til at sende klikbegivenheder til Firefox-vinduet fra Excel. Du skal først sætte dit Firefox-vindue i en konstant position og derefter få koordinaterne for de knapper og tekstfelter, du vil interagere med. Du kan bruge følgende kode til at hjælpe dig med at beregne koordinaterne⁴:

```vba

Dim MyPointAPI As POINTAPI
Private Type POINTAPI
  X As Long
  Y As Long
End Type
Private Declare Function GETCURSORPOS Lib "user32" Alias "GetCursorPos" (lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Public Sub MouseCursorGetOurXY ()
  'this was taken online quite a while ago, left everything as copied from the original source
  Dim L As Long
  Application.Wait (Now () + TimeValue ("00:00:02"))
  L = GETCURSORPOS (MyPointAPI) 'get our cursor position first
  MsgBox CStr (MyPointAPI.X) & ", " & CStr (MyPointAPI.Y) 'displays cursor X Y coordinates
End Sub

```

Derefter kan du bruge SetCursorPos og SendKeys funktioner til at simulere klik og indtastning i Firefox⁴.

Jeg håber, at disse løsninger hjælper dig med dit problem. Hvis du har brug for mere hjælp, så lad mig det vide. 😊

Kilder:
(1) Seleniumbasic - GitHub Pages.
https://florentbr.github.io/SeleniumBasic/

(2) excel - VBA script to interact with FireFox browser - Stack Overflow.
https://stackoverflow.com/questions/41299432/vba-script-to-interact-with-firefox-browser

(3) How To Automate Firefox Or Chrome With Excel VBA And Selenium - MUO.
https://www.makeuseof.com/tag/how-to-automate-firefox-or-chrome-with-vba-and-selenium/

(4) Is it possible to automate Firefox using Excel VBA | Firefox Support ....
https://support.mozilla.org/en-US/questions/967650

(5) Controlling a web browser using Excel VBA - Stack Overflow.
https://stackoverflow.com/questions/7489418/controlling-a-web-browser-using-excel-vba
Avatar billede Slettet bruger
16. april 2023 - 14:45 #7
Beklager, det ser ud til, at mine tidligere instruktioner var baseret på en ældre version af Firefox. Her er en opdateret vejledning, som er mere relevant for nyere versioner af Firefox:

1.    Start Firefox manuelt og sørg for, at det kører normalt uden nogen fejlmeddelelser.

2.    Gå til Firefox-indstillinger ved at klikke på de tre vandrette linjer øverst til højre i Firefox-vinduet og vælge "Indstillinger" eller "Præferencer", afhængigt af din Firefox-version og dit operativsystem.

3.    I indstillingerne skal du gå til fanen "Generelt".

4.    Rul ned til afsnittet "Start" eller "Opstart" og sørg for, at indstillingen "Når Firefox åbnes" eller "Når Firefox starter" er sat til "Start normalt" eller "Vis startside" (eller en anden indstilling efter dit valg).

5.    Luk Firefox og prøv derefter at køre din VBA-kode igen fra Excel og se om problemet er løst.

Hvis dette ikke løser problemet, kan du også overveje at deaktivere eventuelle Firefox-udvidelser eller tilføjelser, da de kan forstyrre samspillet mellem Excel VBA og Firefox. Du kan også kontrollere Firefox-indstillingerne for sikkerhed og beskyttelse mod potentielle hindringer for eksterne applikationer.

Hvis problemet fortsætter, kan det være en god idé at kontakte Mozillas supportteam eller Excel VBA-fællesskabet for yderligere assistance med at identificere og løse problemet.
Avatar billede ksor Mester
16. april 2023 - 14:55 #8
Jeg har ikke nogen af de indstillingsmuligheder, som du angiver.

Mht. VBA koden skal den jo ikke bare virke ved FirweFox - den skal jo også kunne vise siden i andre browsere - se prøver at se i dine links !
Avatar billede Slettet bruger
16. april 2023 - 14:59 #9
🤓👍 Fortsat god dag, hopper af her
Avatar billede ksor Mester
17. april 2023 - 16:56 #10
Der er en ganske naturlig forklaring på dette 'problem' !

Jeg tror det gælder flere browsere - man starter browseren i SafeMode ved at holde SHIFT nede medens man starter browseren !

Mit problem er løst ved at jeg bytter rundt på hvornår der skal trykkes på SHIFT ved samtidig klik på en Shape - that's all folks !
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

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