26. oktober 2000 - 08:25Der er
15 kommentarer og 1 løsning
Data fra flere forskellige Excel filer automatisk
Merge data from several workbooks You can link workbooks from several users or departments and then integrate the pertinent data into a summary workbook. That way, when the source workbooks are changed, you won\'t have to manually change the summary workbook.
Hvordan gør man det? Altså integrationen. Jeg kan nu hente data fra én fil vha:
=SUM(\'C:\\[hej.xls]Sheet1\'!C2:C4)
Men hvis jeg gerne vil have ALLE filer i biblioteket c:\\bibliotek
Detter lægger værdien af cellerne i de 2 forskellige regneark sammen og returnerer den i cellen.
ang.: kæder og opdatering
Hvis de automatiske kæder til data i andre programmer skal opdateres, skal du klikke på Indstillinger i menuen Funktioner, klikke på fanen Beregning og sørge for, at afkrydsningsfeltet Opdater fjernreferencer er markeret. Hvis dette felt ikke er markeret, tilsidesættes indstillingen Automatisk i dialogboksen Kæder i menuen Rediger for sammenkædede datakilder fra andre programmer, f.eks. et Microsoft Word-dokument eller en Microsoft Access-database.
Lav en VB-funktion, der med parametrene path, sheetname og range gennemlæser alle filer i et bibliotek og henter de relevante data fra filerne, der returneres vha path (ex. c:\\data\\*.xls)
Denne funktion kan du bruge i dine celler, som almindelige XL-funktioner.
De forskellige filer finder du vha. Dir() kommandoen.
I en celle vil du herefter kunne skrive funktionen =FileSum(\"c:\\data\\*.xls\",\"sheet1\",\"c2:c4\")
desværre nikolaj, det er ikke lige det jeg mener. Jeg ved som sagt ikke hvor mange filer der er, men kun at de ligger i et bestemt bibliotek. Anyway, jeg tror jus har et svar...
jus>>men du må godt uddybe lidt... jeg ved ikke lige så meget om det... Jeg troede at man med alm excel komandoer kunne det... jeg giver 200 point, hvis du laver det til mig...
Der står noget her om det i Visualbasic hjælpefilen...
Dir returns the first file name that matches pathname. To get any additional file names that match pathname, call Dir again with no arguments. When no more file names match, Dir returns a zero-length string (\"\"). Once a zero-length string is returned, you must specify pathname in subsequent calls or an error occurs. You can change to a new pathname without retrieving all of the file names that match the current pathname. However, you can\'t call the Dir function recursively. Calling Dir with the vbDirectory attribute does not continually return subdirectories.
Man kan ikke bruge en Function til at åbne og lukke filer med, så hvis det skal laves som en Function må man finde en anden måde at hente data fra de lukkede filer. Alternativt kan man bruge en procedure til at generere en reference til hver fil, men den vil ikke udenvidere blive blive opdateret når der tilføjes eller fjernes filer fra mappen.
-nu er det jo ikke det rette forum, men alligevel...
Jeg har en lille VB-stump liggende, som åbner txt-filer. Den kan da hjælpe jer lidt på vej :-)
Der er to subs - en der pløjer biblioteket igennem og en der åbner filerne. Den sidste kaldes fra den første.
Der kommer endda en lille boks og spørger hvor filerne er gemt henne og så er der en lille kontrol som fortæller hvor mange der er af dem.
Så skal der rode lidt mindre med koden. Feel free:
[claus]
Sub TXTFiler(x)
Dim fs As Object \'filsøgning Dim f As Integer \'fil/tæller Dim path As String \'sti til filer Dim fn As String \'filnavn Dim Response As Variant \'fejlmeddelelser
With fs .LookIn = path .FileName = \"*.txt\" If .Execute > 0 Then Response = MsgBox(\"Der er \" & .FoundFiles.Count & _ \" *.txt-filer i:\" & Chr(10) & path, vbOKOnly, \"Kontrol af filer\") For i = 1 To .FoundFiles.Count
fn = .FoundFiles(i)
Call OpenFile(fn) \'Filerne åbnes
Next i Else MsgBox \"Der er ingen *.txt-filer i biblioteket.\" End If End With
Hvis brugernes ark er helt ens, var det så ikke mere smart at lade brugerne lave en makrooverførsel af C2:C4 til dit hovedark - alternativt pr. automatik v.h.a. Private Sub Workbook_Deactivate() ?
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.