29. august 2003 - 13:25Der er
12 kommentarer og 1 løsning
totaler i separat bog/projekt/mappe IKKE ark..
jeg skal opsamle totaler fra X-antal regneark, i eet, separat ark. alle regneark ligger i samme katalog (f.eks. c:\regneark\aaa.xls c:\regneark\bbb.xls c:\regneark\ccc.xls
i hvert af disse er hhv. 12 (måneders) ark + 1 total for året. jeg har så et separat regneark: c:\regneark\total\totaler.xls i dette ark vil jeg have en automatik, som indsamler totaler fra hvert af de andre ark. Der er 5 felter i hvert ark som skal hentes ind i totaler.xls; og beregnes til en årstotal. Når jeg skriver automatik, mener jeg at, der skal læses filnavne fra c:\regneark\*.xls således man ikke skal håndkode hver gang der er oprettet et nyt regneark. Hvordan gør jeg ? Jeg ser gerne en total-løsning ( se lige det mega-antal point jeg giver !!)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Skal total filen bestå af et total ark efterfulgt af et antal ark svarende til antal filer i mappen ? Eller kun et ark svarende til summen af alle total ark i mappen ?
Det kan gøres smartere end det her, men det virker. Køres fra c:\regneark\total\totaler.xls
Sub BatchProcess() Dim FS As FileSearch Dim FilePath As String, FileSpec As String, SheetName As String Dim i As Integer Dim v As Variant Dim sheet As String, cell_1 As String, cell_2 As String, cell_3 As String Dim cell_4 As String, cell_5 As String FilePath = "C:\Regneark\" FileSpec = "*.xls" SheetName = "Total" cell_1 = "$A$1" cell_2 = "$A$2" cell_3 = "$A$3" cell_4 = "$A$4" cell_5 = "$F$2"
Set FS = Application.FileSearch With FS .LookIn = FilePath .Filename = FileSpec .Execute If .FoundFiles.Count = 0 Then MsgBox ("Ingen filer fundet") Exit Sub End If End With For i = 1 To FS.FoundFiles.Count v = Split(FS.FoundFiles(i), Application.PathSeparator) ActiveCell.Offset(i - 1, 0) = hentceller(FilePath, v(UBound(v)), SheetName, cell_1) ActiveCell.Offset(i - 1, 1) = hentceller(FilePath, v(UBound(v)), SheetName, cell_2) ActiveCell.Offset(i - 1, 3) = hentceller(FilePath, v(UBound(v)), SheetName, cell_3) ActiveCell.Offset(i - 1, 4) = hentceller(FilePath, v(UBound(v)), SheetName, cell_4) ActiveCell.Offset(i - 1, 5) = hentceller(FilePath, v(UBound(v)), SheetName, cell_5)
Next Range(ActiveCell, ActiveCell.Offset(i, 1)) = Range(ActiveCell, ActiveCell.Offset(i, 1)).Value End Sub
Function hentceller(p, f, s, c) hentceller = "='" & p & "[" & f & "]" & s & "'!" & Range(c).Address(, , xlA1) End Function
Aheiss -> Rigtigt, der kom nogle nye funktioner til i xl2000. Det er dog muligt at emulere disse. MS har en side med disse. her er en anden jeg fandt engang.
Function Split(sString As String, Optional sDelim As String = " ", _ Optional ByVal Limit As Long = -1, _ Optional Compare As Long = vbBinaryCompare) As Variant '''''''''''''''''''''''''''' ' Split mirrors the Split function introduced in XL2000 ' Author Myrna Larson ' posted to microsoft.public.excel.programming 13 Nov 2001 Dim vOut As Variant, StrLen As Long Dim DelimLen As Long, Lim As Long Dim n As Long, p1 As Long, p2 As Long
StrLen = Len(sString) DelimLen = Len(sDelim) ReDim vOut(0 To 0) If StrLen = 0 Or Limit = 0 Then ' return array with 1 element which is empty ElseIf DelimLen = 0 Then vOut(0) = sString ' return whole string in first array element Else Limit = Limit - 1 ' adjust from count to offset n = -1 p1 = 1 Do While p1 <= StrLen p2 = InStr(p1, sString, sDelim, Compare) If p2 = 0 Then p2 = StrLen + 1 n = n + 1 If n > 0 Then ReDim Preserve vOut(0 To n) If n = Limit Then vOut(n) = Mid$(sString, p1) ' last element contains entire tail Exit Do Else vOut(n) = Mid$(sString, p1, p2 - p1) ' extract this piece of string End If p1 = p2 + DelimLen ' advance start past delimiter Loop End If Split = vOut End Function
jeg har været væk et stk. tid, sorry. jeg kan se at JanVogts udgave virker OK. Men !.. hvordan får jeg det til at blive i arket.. så ikke der oprettes en ny hvergang ? (Kan se at FætterGuf også har spurgt, men uden svar)
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.