14. marts 2011 - 12:53Der 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.
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
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)
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
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 :)
Synes godt om
Ny brugerNybegynder
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.