15. februar 2008 - 12:43Der 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.
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.
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.
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 *****************
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.
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.