30. oktober 2008 - 15:45Der 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.
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
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
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?
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
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.
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
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.
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
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
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.
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.