Avatar billede hjald8 Nybegynder
20. januar 2014 - 18:03 Der er 9 kommentarer og
1 løsning

Gennemløb af filer i et brugervalgt bibliotek VBA

Jeg er noget rusten i dette VBA - men det skal jo ikk holde en tilbage.

Jeg har en kode, som gennemløber samtlige filer - .jpg-filer - i et defineret bibliotek. Hvis koden finder filer, som er ioverenstemmelse med filnavne i en kolonne i Excel-filen, bliver billedet indsat på en defineret plads.

Det fungerer sådan set fint.

Men jeg har behov for at brugeren vælger biblioteket (stien), idet det ofte er svært at vide hvor disse jpg-filer findes. Dernæst siger erfaringen, at det er svært for brugeren, at regne det korrekte stinavn ud.

Er der nogen der har en god ide til hvordan det løses - evt. ved at bruge Excels/microsofts sædvanlige dialogbokse til at gøre det.

Alternativt at man/jeg laver en formular - som kan søge i bibliotekerne (brugervenligt) - (kan man det?)

Det ville være fantastisk, hvis det kunne lykkes. På forhånd tak.
Avatar billede supertekst Ekspert
20. januar 2014 - 18:25 #1
Er jpg-filerne samlet i et bibliotek på et bestemt drev - eller?
Avatar billede kabbak Professor
20. januar 2014 - 18:27 #2
Public Sub Test()
Dim MinSti As String
MinSti = Sti ' kald af function
End Sub


Function Sti() As String
'Declare a variable as a FileDialog object.

    Dim fd As FileDialog

    Set fd = Application.FileDialog(msoFileDialogFolderPicker)
    Dim vrtSelectedItem As Variant
    With fd
        If .Show = -1 Then
            For Each vrtSelectedItem In .SelectedItems
              Sti = vrtSelectedItem
            Next vrtSelectedItem
        Else
        End If
    End With
    Set fd = Nothing

End Function
Avatar billede hjald8 Nybegynder
20. januar 2014 - 19:29 #3
Hold da op. Super hurtigt

Billederne ligger i samme bibliotek. Ellers må brugeren sørme flytte filerne sammen - andet er ikke rimeligt.

Kabbak: Det ser rigtig godt ud. Det er jo formentlig niveauer over min viden på VBA. Når jeg prøver at afvikle - kommer den med en kompileringsfejl. Dernæst - hvor skal jeg sætte min kode ind? mellem For... Next?
Avatar billede hjald8 Nybegynder
20. januar 2014 - 19:31 #4
Stopper ved Function Sti()  as string
Avatar billede kabbak Professor
20. januar 2014 - 19:40 #5
du kalder den med

Public Sub Test()
Dim MinSti As String
MinSti = Sti() ' kald af function

End Sub

Du skal bruge MinSti , den indeholder din Path

jeg får ingen fejl
Avatar billede hjald8 Nybegynder
20. januar 2014 - 19:51 #6
Brugte også sub'en - ikke funktionen. Men forsøgte på min Mac - men har nu forsøgt på min windowsmaskine - der kører sub'en.

Men hvor skal jeg så sætte min kode ind?
Avatar billede hjald8 Nybegynder
20. januar 2014 - 22:07 #7
Sorry. Meget for hurtig med spørgsmål. MinSti skal jo bruges i samarbejde med min øvrige kode. Kan ikke nå det i aften - da jeg har et par timers arbejde. Men ser om jeg kan nå det i morgen tidlig. Spændende om jeg kan få det til at virke. Tusind tak - indtil videre.
Avatar billede hjald8 Nybegynder
21. januar 2014 - 09:28 #8
Hi Kabbak.

Super løsning. Let at sætte ind i sin kode - let at bruge for brugeren.

Kan koden evt. ændres således brugeren i dialogboksen kan se hvilke .jpg filer, som der forefindes i biblioteket.

Lige pt. går Excel vel ud fra at der skal ledes efter Excel-filer, hvorfor der ikke kan ses andre typer filer. Eller tager jeg fejl?

Ellers tusind tak - læg et svar.
Avatar billede kabbak Professor
21. januar 2014 - 12:36 #9
Her er en hvor du kan prøve begge

Public Sub Test()
Dim MinSti As String
MinSti = Sti ' kald af function , bruges både til 1. og 2,
MinSti = Left(MinSti, InStrRev(MinSti, "\") - 1) '2. udkommenter denne linje hvis du bruger 1.
End Sub


Function Sti() As String
'Declare a variable as a FileDialog object.

    Dim fd As FileDialog

  ' Set fd = Application.FileDialog(msoFileDialogFolderPicker)'1.
  Set fd = Application.FileDialog(msoFileDialogOpen) '2. her kan du se filerne og skal klikke på en for at få stien
    Dim vrtSelectedItem As Variant
    With fd
        If .Show = -1 Then
            For Each vrtSelectedItem In .SelectedItems
              Sti = vrtSelectedItem
            Next vrtSelectedItem
        Else
        End If
    End With
    Set fd = Nothing

End Function
Avatar billede hjald8 Nybegynder
21. januar 2014 - 13:15 #10
Tusind tak. Fantastisk
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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