Avatar billede 1977_a Nybegynder
14. marts 2011 - 12:53 Der er 7 kommentarer og
1 løsning

Knap i Excel til at åbne nyt dokument

Hej,

Jeg har et Excel ark, hvor jeg via en knap (eller hyperlink) skal åbne et nyt dokument (Word).

Tryk på knap eller hyperlink er betinget af, at værdien i celle D100 ikke overstiger 1. Knappen eller hyperlinket skal altså ikke være aktivt, hvis D100 er lig med eller mere end 1.

Hvad gør jeg?

Hilsen 1977_a
Avatar billede Ialocin Novice
14. marts 2011 - 14:46 #1
Hej 1977_a


Hvad med denne her vba kode, som ligger bag din knap:


Private Sub cmdÅbnWord_Click()

    If Me.Range("D10").Value < 1 Then

        Application.ActivateMicrosoftApp xlMicrosoftWord

    End If
End Sub



Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
14. marts 2011 - 14:47 #2
Hej 1977_a

Og "D10" skal selvfølgelig være "D100" :o)
Avatar billede 1977_a Nybegynder
14. marts 2011 - 15:22 #3
Hej og tak for hurtig respons :-)

Jeg kom til at skrive noget forkert i mit spørgsmål - det er nemlig ikke et nyt dokument i Word, men et eksisterende dokument "Kontrakt_v01".

Kan du sige hvordan jeg får sat det ind med din kode i stedet?
Avatar billede Ialocin Novice
14. marts 2011 - 21:41 #4
Hej 1997_a

Her er en ny kode, som burde åbne den fil du ønsker.

Noter:
- Udskift selv stien, som tildeles fstreng, med din egen sti.
- I VBA under Tools ... References, skal du lige vinge Microsoft Word 11.0 Object Lirary af ... for at skidtet virker.

-------------------------------

Private Sub cmdÅbnWord_Click()

'ved fejl ... gå til WError
On Error GoTo WError

   
    Dim wApp As Word.Application
    Dim fstreng As String
   
   
    'hvis celle "D100" er mindre end 1
    If Me.Range("D100").Value < 1 Then


        'opret en ny instans af Word
        Set wApp = New Word.Application
       
        'tildel fstreng stien til den ønskede fil
        fstreng = "C:\Users\Desktop\Kontrakt_v01"
       
       
        'gør Word synlig og aktiver do.
        wApp.Visible = True
        wApp.Activate


        'åbn den ønskede fil
        wApp.Documents.Open fstreng

        'luk instansen
        Set wApp = Nothing
       
    End If
   
     
'ved fejl ... afslut proceduren
exit_WError:
    Exit Sub



'Fejlmeddelelse hvis filen ikke findes
WError:

    'skjul Word applicationen
    wApp.Visible = False
   
    'informer brugeren
    MsgBox "Filen " & fstreng & " findes ikke.", vbInformation", vbInformation
     
    'luk Word applicationen
    wApp.Quit
 
   
    'fortsæt med exit_WError
    Resume exit_WError
   
End Sub


-----------------------

Med venlig hilsen, Nicolai
Avatar billede Ialocin Novice
14. marts 2011 - 21:47 #5
Argh ....

Sætte nissen har været på spil igen :o)

I 6. sidste linie er der et vbInformation for meget !!!!!

Linien skal se således ud:
MsgBox "Filen " & fstreng & " findes ikke.", vbInformation


Beklager, Nicolai
Avatar billede 1977_a Nybegynder
16. marts 2011 - 21:16 #6
Hej igen og mange tak :-)

Når jeg klikker på knappen, får jeg nu denne besked frem:

Makroen XXX kan ikke køres. Makroen er måske ikke tilgængelig i denne projektmappe, eller alle makroer er deaktiveret

Jeg har været inde i indstillinger for makroer og har checket at alle makroer er aktiveret. Har du en idé om hvorfor den så skal "brokke sig"?
(sikkert en fejl 40, men kan altså ikke lige se hvad der er los)

Hilsner
1977_a
Avatar billede Ialocin Novice
16. marts 2011 - 23:42 #7
Hej 1977_a


Det er min fejl!!
Nogen gange er fingrene hurtigere end hovedet :o)

I VBA skal du kopiere nedenstående funktion (som i sin tid er sakset fra nettet) ind umiddelbart efter din knap procedure.

Funktionskoden undersøger, om din ønskede fil allerede er åben.
Din fejlmeddelse opstår fordi knap koden kalder funktionen, som du jo af gode grunde ikke har .... endnu.

Prøv om det virker efter hensigten ?

--------------------


Public Function FileAlreadyOpen(FullFileName As String) As Boolean
    ' returns True if FullFileName is currently in use by another process
    ' example: If FileAlreadyOpen("C:\FolderName\FileName.xls") Then...
    Dim bRetVal As Boolean
    Dim f As Integer
    f = FreeFile

    On Error Resume Next

    Open FullFileName For Binary Access Read Write Lock Read Write As #f
    Close #f

    ' If an error occurs, the document is currently open.
    If Err.Number <> 0 Then
        bRetVal = True
        Err.Clear
        MsgBox "Filen er allerede åben", vbInformation  '"Error #" & Str(Err.Number) & " - " & Err.Description
    Else
        bRetVal = False


    End If

    On Error GoTo 0

    FileAlreadyOpen = bRetVal
End Function


---------------------

Med venlig hilsen, Nicolai
Avatar billede 1977_a Nybegynder
03. maj 2011 - 21:17 #8
Hej igen,
Tak for dine mange forslag. Jeg fik det desværre ikke til at virke, men det endte med ikke at være relevant alligevel.

Men takker alligevel for din hjælp, og smider en accept af dit svar ovenfor :)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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