Avatar billede mira96ac Novice
15. februar 2008 - 12:43 Der er 8 kommentarer og
1 løsning

Menu userform i Excel

Hej

Mit spørgsmål er som følger:

1. Jeg har lavet en userform i Excel hvor man øverst til venstre kan taste et kundenr.

2. På baggrund af denne indtastning skal følgende data frembringes:
      Alle Excel filer
      Alle Word filer
      Alle PDf-filer

Disse filer skal vises til højre i userform-menuen således at man kan åbne disse filer direkte fra userformen.

Men hvordan får jeg menuen til at finde disse filer og strukturere dem.

Generelt er alle data lagret på samme drev (h:\)
Dernæst i mapper (kundenr+_kundenavn)
Og herunder flere undermapper med blandede Word-filer og Excel-filer m.v.

Et eksempel på menuen:


------------------------------------------------
|Kundenr.|          MENU                      |
| 1409  |                                    |
------------------------------------------------
|Excel ->|  Excel fil 1.xls                    |
|Word    |  Excel fil 2.xls                    |
|PDf    |  Excel fil 3.xls                    |
------------------------------------------------
Avatar billede word-hajen Nybegynder
15. februar 2008 - 17:45 #1
Hvis man skal taste et kundenummer, hvor kommer kundenavnet så fra? Slår du det op et sted?

Skal alle filer ind i samme liste eller ville det være en idé at have en liste til hver filtype?

Hvad er egentlig idéen med menuen? Jeg tænker på, at filerne i undermapper osv. vel er organiseret på en måde, så de netop skulle være nemme at genfinde, når man skal bruge dem (og så kan man jo bruge stifinderen). Det virker, som om det bliver smidt overbord her, når du "hælder" alle filer ind i én stor klump.
Avatar billede mira96ac Novice
16. februar 2008 - 12:01 #2
I princippet vil det være sådan at på H-drevet under hver kundemappe er filerne inddelt som du skriver. Men selve filnanvgivningen er blevet ændret inden for det sidste halve år så f.eks. alle budgetter hedder "kundenr._budget_årstal.xls" osv.

Derfor vil jeg måske kun i første omgang sorterere mine data i menuen efter navngiveningen af filerne og ikke have alle frem.

Der er så mange undermapper og filer at stifinder ikke er overskuelig. De tvil derfor være klart nemmere hvis man kan taste et kundenummer og den udfra dette nummer selv slår op på h-drevet og finder de filer som er relevante for denne kunde.
Avatar billede word-hajen Nybegynder
16. februar 2008 - 13:53 #3
Forudsætninger:
Der er sat en reference til Microsoft Scripting Runtime i projektet
Du lister filerne i et listview, hvor view er sat til report
Kundenr. indtastes i en tekstboks - du må selv finde kundenavnet/sætte yderligere kode på.
Proceduren sættes i gang af brugeren ved klik på commandbutton.
Ret evt. navne på controller.
Nedenstående placeres på din userform

*********************
Option Explicit

Private m_objFS As Scripting.FileSystemObject

Private Sub CommandButton1_Click()
    Dim objFolder As Folder
    Dim strFolder As String
   
    If Me.TextBox1 <> "" Then
        Me.ListView1.ListItems.Clear
        strFolder = "H:\" & Me.TextBox1 & "_" & "kundenavn"
        If m_objFS.FolderExists(strFolder) Then
            Set objFolder = m_objFS.GetFolder(strFolder)
            Call ListFilesInFolder(objFolder)
        End If
    End If
   
End Sub

Private Sub UserForm_Initialize()
    Set m_objFS = New Scripting.FileSystemObject
   
    With Me.ListView1.ColumnHeaders
        .Add Text:="Filnavn", Width:=300
        .Add Text:="Sti", Width:=0
        .Add Text:="Type", Width:=80
    End With
End Sub

Private Sub UserForm_Terminate()
    Set m_objFS = Nothing
End Sub

Private Sub ListFilesInFolder(objFolder As Folder)
    Dim objFolderInFolder As Folder
    Dim objFile As File
   
    For Each objFile In objFolder.Files
        If m_objFS.GetExtensionName(objFile) = "xls" Or m_objFS.GetExtensionName(objFile) = "doc" Or _
            m_objFS.GetExtensionName(objFile) = "pdf" Then
                With Me.ListView1
                    .ListItems.Add Text:=objFile.Name
                    .ListItems(.ListItems.Count).SubItems(1) = objFile.Path
                End With
           
            Select Case m_objFS.GetExtensionName(objFile)
                Case "xls"
                    Me.ListView1.ListItems(Me.ListView1.ListItems.Count).SubItems(2) = "Excel"
                Case "doc"
                    Me.ListView1.ListItems(Me.ListView1.ListItems.Count).SubItems(2) = "Word"
                Case "pdf"
                    Me.ListView1.ListItems(Me.ListView1.ListItems.Count).SubItems(2) = "PDF"
            End Select
        End If
    Next objFile
   
    For Each objFolderInFolder In objFolder.SubFolders
        Call ListFilesInFolder(objFolderInFolder)
    Next objFolderInFolder
End Sub
*****************
Avatar billede word-hajen Nybegynder
16. februar 2008 - 13:54 #4
Du kan tilføje sortering ved dobbeltklik på kolonnernes header. Det kan være en god feature for brugerne. Det vil også være nemt at tilføje yderligere oplysninger i dit listview, så som dato for senest gemt osv.
Avatar billede word-hajen Nybegynder
19. februar 2008 - 22:19 #5
Ahemm... en tilbagemelding?
Avatar billede mira96ac Novice
20. februar 2008 - 08:01 #6
Sorry word-hajen

Jeg har lige været uden internet/pc i et par dage.
Og er det også et par dage mere grundet flytning.

Jeg håber snarligt at få mulighed for at teste din løsning.
Avatar billede word-hajen Nybegynder
20. februar 2008 - 15:30 #7
Det er i orden. Jeg så bare, at du havde postet andre spørgsmål.
Avatar billede mira96ac Novice
20. februar 2008 - 15:54 #8
Det var bare et par hurtige som jeg kunne klare på arbejdet :-)
Avatar billede mira96ac Novice
24. marts 2009 - 16:52 #9
Lukker igen
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