Avatar billede faetterguf Nybegynder
25. marts 2003 - 15:45 Der 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.
Avatar billede janvogt Praktikant
25. marts 2003 - 16:25 #1
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.
Avatar billede bak Forsker
25. marts 2003 - 20:45 #2
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.
26. marts 2003 - 09:36 #3
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.
Avatar billede faetterguf Nybegynder
26. marts 2003 - 10:38 #4
Problemet er at jeg meget nådig ville skulle til at åbne de 300-400 ark når de kommer tilbage, andet end lige at gemme dem i en mappe.

Det ikke er muligt på nogen måde at komme til et fælles drev for alle disse personer.

kan man på ingen måde fra et excel dokument hente noget fra andre excel dokumenter ? er det kun internt at det kan lade sig gøre ?
Avatar billede roose Nybegynder
26. marts 2003 - 10:49 #5
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).
Avatar billede janvogt Praktikant
26. marts 2003 - 11:28 #6
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.
Avatar billede janvogt Praktikant
26. marts 2003 - 11:28 #7
..... vel og mærke uden at åbne filerne.
Avatar billede faetterguf Nybegynder
26. marts 2003 - 12:15 #8
janvogt, og for en non-excel guy er koden til det ?? :)
Avatar billede janvogt Praktikant
26. marts 2003 - 13:01 #9
Så'gerne ..... denne kode skulle kunne bruges:

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
Avatar billede faetterguf Nybegynder
26. marts 2003 - 14:10 #10
janvogt, sætter jeg "bare" koden ind i en makro og kører den ??

hvor er det man skal rette i kode for at vælges hvilke celler som skal trække´s ud af arket ?
Avatar billede janvogt Praktikant
26. marts 2003 - 14:54 #11
Ja, du indsætter den bare i et modul i VBA (ALT+F11)
Så skal du selvfølgelig ændre linien:
FolderName = "C:\Foldername"
til den mappe du ønsker.

Denne linie
cValue = GetInfoFromClosedFile(FolderName, wbList(i), "Sheet1", "A1")
skal ændres, hvis det ikke er A1 du ønsker referencen fra.

Hvis du har flere værdier skal du gentage løkken:
For i = 1 To wbCount ........

Koden laver egentlig nogle links over til filerne, så den har visse begrænsninger, hvis du har mange felter du skal have overført.
Avatar billede faetterguf Nybegynder
26. marts 2003 - 16:34 #12
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 ???
Avatar billede faetterguf Nybegynder
26. marts 2003 - 17:03 #13
hvis jeg nu gerne vil have lidt kontrol over hvordan det ser ud det output man får, hvor skal jeg så kigge henne ? (baggrundsfarve, placering osv. ??)

og kan det lade sig gøre at indskrive hvilke felter det er i arket, som man gerne vil se, i selve det dokument hvor man kører macroen ???
Avatar billede faetterguf Nybegynder
26. marts 2003 - 17:08 #14
endnu et spg. nr man kører den macro så laver den resultatet i et nyt dokument, kan man undgå det ?
Avatar billede janvogt Praktikant
26. marts 2003 - 21:20 #15
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.
Avatar billede janvogt Praktikant
26. marts 2003 - 21:21 #16
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
Avatar billede bak Forsker
26. marts 2003 - 22:08 #17
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.
Avatar billede janvogt Praktikant
27. marts 2003 - 00:06 #18
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.
Avatar billede faetterguf Nybegynder
27. marts 2003 - 10:25 #19
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 :) )
Avatar billede janvogt Praktikant
27. marts 2003 - 11:04 #20
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.
Avatar billede janvogt Praktikant
27. marts 2003 - 11:10 #21
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 .......
Avatar billede faetterguf Nybegynder
27. marts 2003 - 11:43 #22
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 :)
Avatar billede faetterguf Nybegynder
27. marts 2003 - 11:44 #23
Har du evt. en side hvor man kan finde nogle af de koder der skal bruges til celle tricket, så kan jeg jo selv også prøve at få det til at virke :)
Avatar billede janvogt Praktikant
27. marts 2003 - 12:25 #24
Næ desværre, selv om problemstillingen egentlig er meget relevant.
Avatar billede faetterguf Nybegynder
27. marts 2003 - 13:47 #25
men kan du lave det eller skal jeg søge hjælp andet steds ??
Avatar billede janvogt Praktikant
27. marts 2003 - 13:57 #26
Jeg skal nok prøve at kigge på det - forhåbentlig en gang i aften, når jeg kommer hjem til den PC jeg opstillede eksemplet på.
Avatar billede faetterguf Nybegynder
27. marts 2003 - 14:12 #27
Det lyder lækkert :)
Avatar billede faetterguf Nybegynder
27. marts 2003 - 14:42 #28
Og så fandt jeg selv ud af det, brugte Range("cellen") til at ordne det :) du skal have mage tak for den store hjælp janvogt :)
Avatar billede janvogt Praktikant
27. marts 2003 - 14:51 #29
Jamen velbekomme.
Du får da vist rigtig lært noget disse dage ..... :-)
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