25. marts 2003 - 15:45Der er
28 kommentarer og 1 løsning
import af felter fra andet excel ark.
En af mine kære brugere har nogle spørgeskemaer i excel som han gerne vil have sendt ud til nogle personer, og så skal de sende dem tilbage (via. email).
Så vil han gerne i et andet excel ark kunne trække noget statistik ud af alle disse ark. Kunne eksempelvis være alle svarene til et af spørgsmålene, på en række derned med virksomhedsnavnet til venstre for.
Er der nogle der har en ide om hvordan det kan gøres, enten vha. nogle indbyggede funktioner i excel eller noget helt andet ?
Hvis der er nogle som har en ide om hvilken teknik/teknologi man kan bruge vil jeg gerne give halv point for det.
Jeg har før lavet noget tilsvarende. Her plejer jeg i selve "spørgeskemaet" at lave et dataark, som er skjult. Dataarket opstiller alle data på en hensigtsmæssig måde, så de er velegnede til at overføre/importere til et database-ark, hvor der så er mulighed for at lave statistik.
En anden mulighed er at basere spørgeskemaet på en skabelon med datasporing. Her opsættes så de felter, der skal gemmes i excel-databasen. Skemaerne sendes ud og udfyldes. Når de kommer tilbage åbnes regnearket og gemmes. Herved bliver de nye data gemt i databasen. Når alle/fleste regneark igen er tilbage, kan databasen nu bruges til statistik.
Jeg er tilhænger af Bak's løsning, i databasen kan man hele tiden følge med i hvem der har udfyldt skemaet. Databasen skal bare placeres på et drev hvor alle har læse/skrive rettigheder.
Du kender jo adresserne på de felter, der skal hentes ind efterfølgende. Du kan kode noget VBA der tager filerne i biblioteket én for én og indlæser svarene i et andet excelark (eller måske i en database). Det er nok en lidt tung opgave, men mit bedste bud. Jeg mener ikke, at du kan "linke" cellerne direkte til 3-400 ark (som jo nødvendigvis må hedde noget forskelligt).
Det kan godt lade sig gøre i Excel via VBA-kode at hente f.eks. alle værdier af celle A1 i x antal filer, som ligger i samme mappe, over i et database/statistik ark.
Sub ReadDataFromAllWorkbooksInFolder() Dim FolderName As String, wbName As String, r As Long, cValue As Variant Dim wbList() As String, wbCount As Integer, i As Integer FolderName = "C:\Foldername" ' create list of workbooks in foldername wbCount = 0 wbName = Dir(FolderName & "\" & "*.xls") While wbName <> "" wbCount = wbCount + 1 ReDim Preserve wbList(1 To wbCount) wbList(wbCount) = wbName wbName = Dir Wend If wbCount = 0 Then Exit Sub ' get values from each workbook r = 0 Workbooks.Add For i = 1 To wbCount r = r + 1 cValue = GetInfoFromClosedFile(FolderName, wbList(i), "Sheet1", "A1") Cells(r, 1).Formula = wbList(i) Cells(r, 2).Formula = cValue Next i End Sub
Private Function GetInfoFromClosedFile(ByVal wbPath As String, wbName As String, wsName As String, cellRef As String) As Variant Dim arg As String GetInfoFromClosedFile = "" If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\" If Dir(wbPath & "\" & wbName) = "" Then Exit Function arg = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range(cellRef).Address(True, True, xlR1C1) On Error Resume Next GetInfoFromClosedFile = ExecuteExcel4Macro(arg) End Function
er begrænsningen på hvor mange jeg skal have hentet fra hvert enkelt ark, eller hvor mange ark det skal være fra ??
hvis man nu eksempelvis sagde at jeg skulle bruge "C3", "C24" og "D24", hvordan ville koden så se ud, og hvordan ville det ark som ejg ser på se ud ??? ville det komme i pænt i rækker derned af, med de forskellige felter udfor hinanden eller ???
Jeg er ikke helt klar over begrænsningen, men i og med, at den danner links over til alle ark, må der være en begrænsning et sted. Det eksempel jeg har testet har imidlertid ikke givet nogen problemer.
Dit eksempel med C3, C24 og D24 ville medføre følgende kode: For i = 1 To wbCount r = r + 1 C3Value = GetInfoFromClosedFile(FolderName, wbList(i), "Ark1", "C3") C24Value = GetInfoFromClosedFile(FolderName, wbList(i), "Ark1", "C24") D24Value = GetInfoFromClosedFile(FolderName, wbList(i), "Ark1", "D24") Cells(r, 1).Formula = wbList(i) Cells(r, 2).Formula = C3Value Cells(r, 3).Formula = C24Value Cells(r, 4).Formula = D24Value Next i
Kolonne A vil indeholde en liste over alle filerne i mappen. Kolonne B vil indeholde de tilsvarende værdier af C3 Kolonne B vil indeholde de tilsvarende værdier af C24 Kolonne B vil indeholde de tilsvarende værdier af D24
så ja, de vil komme til at stå pænt under hinanden.
Farver og anden formatering mener jeg du skal holde adskilt fra selve databasen og så gemme til dine rapporter/statistik.
Hvis du ikke ønsker at den skal oprette et nyt dokument skal du fjerne linien Workbooks.Add
Hvis du ønsker at starte listen i en anden række end række 1 kan du ændre på variablen r = 0. På tilsvarende måde kan man ændre kolonneplaceringen 1,2,3,4.
Der var lige en fejl m.h.t. kolonneoversigten: Kolonne A vil indeholde en liste over alle filerne i mappen. Kolonne B vil indeholde de tilsvarende værdier af C3 Kolonne C vil indeholde de tilsvarende værdier af C24 Kolonne D vil indeholde de tilsvarende værdier af D24
Jan-> jeg mener ikke din kode danner nogen (permanente) links til de andre filer, den henter simpelthen data fra cellerne i mapperne og placerer disse i det nye ark, så der burde ikke være nogen begrænsning der.
Bak-> Jeg mener at have læst, at der ligger én eller anden begrænsning når man bruger ExecuteExcel4Macro, men du har da ret i, at der ikke ligger nogen direkte links i arket.
janvogt, det ser jo kanon godt ud, det her :) men du siger at det ikke er muligt at kode størrelsen, farven osv. af de celler som man gerne vil have dataerne smidt ind i ??
og er det muligt at skrive de felter som man gerne vil have trukket ud af arkene i den specifierede mappe, i selve det ark som der arbejdes i ?? (for at gøre det abre lidt mere bruger venligt ???. Det er jo nok at jeg skal til at lærer det her :) )
Jeg har da vist ikke sagt, at det ikke er muligt :-) Du kan sagtens lægge noget formatering på .....
Normalt plejer man bare at holde en database eller tabel adskilt fra rapporter/statistik/output/print.
Jeg plejer at samle mine rådata i én fane og på andre faner har jeg så de forskellige udtræk fra databasen. Det kan være lidt farligt at begynde at redigere alt for meget i en database.
Du kan da blive ved med at finde på nye spørgsmål ...... :-)
Jo, det skulle nok være muligt at angive i hovedarket, hvilke celler man ønsker at lave links til. Det skal jeg dog lige have lidt tid at lege lidt med .......
jep, spørgsmål er gode, når man finder en som rent faktisk også kan svarer på dem :)
Men hvis du lige kunne finde ud af det med cellerne ville det var rigtigt lækkert og så er det vist også ved at være lukketid for det her / de her spørgsmål :)
Jamen velbekomme. Du får da vist rigtig lært noget disse dage ..... :-)
Synes godt om
Ny brugerNybegynder
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.