27. marts 2007 - 10:24Der er
8 kommentarer og 1 løsning
Hent af nyeste række i underliggende ark
Hej
Jeg er i gang med at forsøge at lave en ren excel løsning til et problem. Jeg har et hovedark, med en række underliggende ark, som bliver linket ind i hovedarket.
Nu ville jeg gerne lave det sådan, at det kun er den nyeste række der er tilføjet i det underliggende ark der bliver hentet ind i hovedarket. Er det noget der kan lade sig gøre? Det skal lige siges, at alle felterne i de to ark er ens.
Forslag - koden kopieres til VBA/ThisWorkbook (Alt+F11): Koden udføres, når filen åbnes.
Const hovedArkNavn = "hovedark" 'Tilpasses Private Sub workbook_activate() Dim hræk hræk = 1
For Each ark In ActiveWorkbook.Sheets If LCase(ark.Name) <> hovedArkNavn Then ark.Activate antalræk = ActiveCell.SpecialCells(xlLastCell).Row antalKol = ActiveCell.SpecialCells(xlLastCell).Column
For k = 1 To antalKol værdi = Cells(antalræk, k) ActiveWorkbook.Sheets(hovedArkNavn).Cells(hræk, k) = værdi Next k hræk = hræk + 1 Else ark.Cells.Clear End If Next ark
ActiveWorkbook.Sheets(hovedArkNavn).Activate End Sub
Const hovedArkFil = "hovedark.xls" 'Tilpasses Const kildeFilSti = "C:\Documents and Settings\pb\Skrivebord\2703FlytFraTil\" 'Fælles-Mappen Tilpasses Dim kXLS As Object, hræk Private Sub workbook_activate() hræk = 1
Rem sletter indhold i hovedarkFilen (Ark 1) ActiveWorkbook.Sheets(1).Cells.Clear
Rem gennemsøg "fælles-mappen" søgiMappen
Rem vis hovedarket ActiveWorkbook.Sheets(1).Activate
MsgBox ("Overførsel er afsluttet") End Sub Private Sub søgiMappen() 'Der søges efter filer i Kildefil-stien Dim fs, f, f1, fc, s
Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(kildeFilSti) Set fc = f.Files For Each f1 In fc If LCase(f1.Name) <> hovedArkFil Then 'HovedArk-filen medtages ikke gennemgåKildeFil f1.Name End If Next End Sub Private Sub gennemgåKildeFil(kfil) 'data hentes fra ark1 i kildefil Dim count On Error GoTo fejl 'hvis fejl - lukkes object-filen
Rem Åbner kildefilen Set xls = CreateObject("Excel.application") With xls .Workbooks.Open kildeFilSti + kfil
count = 0 For k = 1 To antalKol værdi = .Cells(antalræk, k) If værdi <> "" Then ActiveWorkbook.Sheets(1).Cells(hræk, k) = værdi count = count + 1 End If Next k If count > 0 Then hræk = hræk + 1 'optæl kun række hvis indhold overført(forhindre tomme celler) End If End With
fejl: xls.Quit Set xls = Nothing End Sub
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.