Avatar billede denero Juniormester
30. oktober 2008 - 15:45 Der er 14 kommentarer og
3 løsninger

Åbne mappe inde fra excel

Arbejder inde i et excel regneark, og har løbende brug for at kunne åbne en mappe (med en makro) for der at finde en wordfil blandt flere, som jeg manuelt kan åbne -gennemse.Herefter lukke wordfilen igen og arbejde videre i excelarket. Der skal altså kun åbnes en mappe. I enkelte tilfælde er det en bestemt fil, som jeg så gerne ville kunne åbne, selvfølgelig med en anden makro.
Avatar billede excelent Ekspert
30. oktober 2008 - 16:06 #1
Kan du ikke bare anvende et Hyperlink ?
Avatar billede kabbak Professor
30. oktober 2008 - 16:54 #2
Option Explicit


Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Public Const SW_HIDE = 0
Public Const SW_SHOW = 5

Public Sub ÅbenFil()
Dim stAppPath As String
Dim stAppName As String
Dim result As Integer
Dim RetVal, Fil As String
' Open the file dialog
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
        Fil = .SelectedItems(1)
    stAppPath = "C:\"
    stAppName = Fil
  End With
 
    result = ShellExecute(0, "Open", stAppName, "", stAppPath, SW_SHOW)

    If result < 32 Then
        MsgBox "Couldn't open file ..."
    End If
 
End Sub
Avatar billede denero Juniormester
30. oktober 2008 - 19:03 #3
Jeg er ikke så skkrap til det der kode - kan du ikke lige forklare:

Hvis der er en længere sti til mappen, er det så her...stAppPath = "C:\"

Hvad sker der her.......    If result < 32 Then
                            MsgBox "Couldn't open file ..."
og hvis det skal være en bestemt fil, med navnet"2008.doc", hvad tilføjer jeg så og hvor?
Avatar billede kabbak Professor
30. oktober 2008 - 19:41 #4
Sæt koden ind i et module, ikke et ark eller ThisWorkbook modul

du skal ikke tænke på hvad der står i koden, bare kør makroen ÅbenFil
Avatar billede denero Juniormester
30. oktober 2008 - 19:49 #5
Hvis jeg ikke vælger at åbne en fil men annullerer kommer der en fejl op. Der skle helst v ære mulighed for at fortryde.
Avatar billede denero Juniormester
30. oktober 2008 - 19:50 #6
Hvis jeg ikke vælger at åbne en fil, men annullerer, kommer der en fejl op. Der skal helst være mulighed for at fortryde.
Avatar billede kabbak Professor
30. oktober 2008 - 20:49 #7
Option Explicit



Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long


Public Const SW_HIDE = 0
Public Const SW_SHOW = 5

Public Sub ÅbenFil()
Dim stAppPath As String
Dim stAppName As String
Dim result As Integer
Dim RetVal, Fil As String
' Open the file dialog
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .Show
        If .SelectedItems.Count = 0 Then Exit Sub
        Fil = .SelectedItems(1)
    stAppPath = "C:\"
    stAppName = Fil
  End With

    result = ShellExecute(0, "Open", stAppName, "", stAppPath, SW_SHOW)

    If result < 32 Then
        MsgBox "Couldn't open file ..."
    End If

End Sub
Avatar billede denero Juniormester
30. oktober 2008 - 23:19 #8
Jeg har prøvet koden af - den virker.Men den åbner den mappe, der sidst har været åbnet, kan man ikke lave, så den åbner en helt bestemt mappe.
Avatar billede kabbak Professor
31. oktober 2008 - 08:08 #9
det mener jeg ikke man kan, den virker jo som en normal stifinder.
Avatar billede denero Juniormester
31. oktober 2008 - 08:37 #10
feks kan man stille excel til at åbne en bestemt mappe(bibliotek) hver gang man vil gemme og for den sag skyld åbne(standardfilplacering).Det kan også lade sig gøre med hyperlink, som foreslået af exelent, men det kan jeg ikke rigtig få til at virke i låste ark.
Avatar billede excelent Ekspert
31. oktober 2008 - 17:29 #11
Har lige testet med Hyperlink med beskyttet Ark - virker ok her
Men prøv om denne kode bringer dig nærmere en løsning

Sub OpenWordDocumentFromExcel()
ChDir "C:\Dokumenter" ' Indsæt sti der skal søges i
x = Application.GetOpenFilename
If x = False Then Exit Sub ' Hvis ingen fil valgt så slut
On Error GoTo BadShow
Dim oWord As Object
Set oWord = CreateObject("Word.application")
oWord.Documents.Open x '"C:\Temp\test.doc"
oWord.Visible = True
AppActivate oWord
Set oWord = Nothing
Exit Sub
BadShow:
oWord.Quit
Set oWord = Nothing
End Sub
Avatar billede denero Juniormester
02. november 2008 - 10:25 #12
Undskyld den lange reaktiondtid. Jeg har prøvet koden af(exelent). Virker, men ikke når der i stien er angivet at det er et doc. Den viser flg.Run-time error '76': Path not found.
Avatar billede excelent Ekspert
02. november 2008 - 12:12 #13
Nej ChDir virker ikke med filnavn- kun stien
så anvend denne til en spesifik fil og den anden til at søge:

Sub xOpenWordDocumentFromExcel()
On Error GoTo BadShow
Dim oWord As Object
Set oWord = CreateObject("Word.application")
oWord.Documents.Open "C:\Temp\test.doc" ' indsæt sti og filnavn her
oWord.Visible = True
AppActivate oWord
Set oWord = Nothing
Exit Sub
BadShow:
oWord.Quit
Set oWord = Nothing
End Sub
Avatar billede excelent Ekspert
02. november 2008 - 13:57 #14
Du kan også anvende en kode der kombinere de 2 andre
Ret lige i linie 2 og 3 til aktuel

Sub OpenWordDocumentFromExcel()
fil = "C:\Temp\test.doc" ' Indsæt sti og fil der skal åbnes
sti = "C:\Temp" ' Indsæt sti der skal søges i
If MsgBox("Åbne : " & fil, vbYesNo) = vbYes Then x = fil Else x = sti
ChDir sti
If x = sti Then x = Application.GetOpenFilename
If x = False Then Exit Sub
On Error GoTo BadShow
Dim oWord As Object
Set oWord = CreateObject("Word.application")
oWord.Documents.Open x
oWord.Visible = True
AppActivate oWord
Set oWord = Nothing
Exit Sub
BadShow:
oWord.Quit
Set oWord = Nothing
End Sub
Avatar billede denero Juniormester
02. november 2008 - 17:51 #15
Virker perfekt. Ligger du et svar. øhh - kan man ændre tekst i Msg boks fra ja/nej til åbn fil/åbn mappe eller endnu bedre ændre tekst valgfrit i makro.
Avatar billede excelent Ekspert
02. november 2008 - 18:05 #16
Nej det kan man ikke, men du kan ændre på hjælpeteksten fx sådan :

If MsgBox("Åbne : " & fil & " [Ja] - Åben mappe [Nej]", vbYesNo) = vbYes Then x = fil Else x = sti
Avatar billede denero Juniormester
02. november 2008 - 19:57 #17
Tak for hjælpen begge to.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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