09. oktober 2005 - 22:33Der er
14 kommentarer og 1 løsning
Central registrering af talværdier fra separate Excel tabeller
Hej,
Jeg har udarbejdet et word dokument, hvor alle oplysniner på ønskede katagori står i tabeller. Så hver katagori har sin egen side.
I hver disse tabeller har jeg indsat et lille regneark, hvor der er noget økonomistyring for hver katagori. Dvs. at der ligger et separat regneark på hver side for hver katagori.
Nu til mit spørgsmål, om det vil være muligt at hente oplysninger fra hver af disse separate regneark på hver side op i et central indsat regneark på side 1 f.eks. Så jeg får mere overblik?
Ved godt alt dette nemt kan laves, hvis jeg kun brugte excel, men bryder mig ikke om opstillingen af mine tabeller deri eg. det giver manglende overblik.
Det kan du desværre ikke, da de indlejrede regneark skal betragtes som billeder, når de ikke er åbne - dvs ingen kædning imellem indlejrede regneark.
Den rigtige løsning er at lave et almindeligt Excel regnark, med et ark pr. indlejret regnark (altså som de ser ud i dag) + et opsummeringsark. Indsæt derefter arkene som kæder, der hvor du tidligere har indsat de indlejrede ark. Nu er der fuld integratiom mellem regnearkene og opsummeringsarket.
Kan du give mig en step-by-step guide til, hvordan jeg bruger VBA koden? Jeg er ingen haj til det, så har ingen anelse om, hvor- og hvordan det appliceres til dokumentet:-)
Koden er indsat i ThisDocument i Word-dokumentet. I dette er der afsat et antal sider med indsatte regnearks-objekter, hvor værdien i celle A1 er indsat (1, 10,100,1000). På første side er der insat et tomt XLS-object. Summen på 1111 indsættes efter kørsel i A1 i objektet på side 1. Nye ark kan indsættes når/hvor som helst - og programmet kan igen afvikles uden videre.
Evt. kan der indsættes en knap i en værktøjslinje, der aktivere makroen. VBA-kode: ========= Sub startProgram() Dim xl As Object, obj As Object, antalXLS, total, f As Integer
Set xl = CreateObject("Excel.application") antalXLS = ActiveDocument.InlineShapes.Count total = 0
Rem Første ark er sammentællingsarket If antalXLS > 1 Then For f = 2 To antalXLS Set xl = ActiveDocument.InlineShapes(f).OLEFormat xl.Activate
With xl Set obj = .Object End With
With obj Rem optæller celle A1 i total total = total + .Sheets(1).Cells(1, 1).Value End With Next f
Rem indsæt total i sammentællings-arket Set xl = ActiveDocument.InlineShapes(1).OLEFormat xl.Activate
With xl Set obj = .Object End With
With obj .Sheets(1).Cells(1, 1).Value = total End With End If End Sub
Rem Første ark er sammentællingsarket If antalXLS > 1 Then For f = 2 To antalXLS Set xl = ActiveDocument.InlineShapes(f).OLEFormat xl.Activate
With xl Set obj = .Object End With
With obj Rem optæller cellerne A1-A3 i totaler totA1 = totA1 + .Sheets(1).Cells(1, 1).Value totA2 = totA2 + .Sheets(1).Cells(2, 1).Value totA3 = totA3 + .Sheets(1).Cells(3, 1).Value End With Next f
Rem indsæt total i sammentællings-arket Set xl = ActiveDocument.InlineShapes(1).OLEFormat xl.Activate
With xl Set obj = .Object End With
With obj .Sheets(1).Cells(1, 1).Value = totA1 .Sheets(1).Cells(2, 1).Value = totA2 .Sheets(1).Cells(3, 1).Value = totA3 End With End If End Sub
Hej - årsagen er at jeg definerede de tre totaler som Integer, som har en max på lidt over 65.000.
Hvis du retter linien (3. linie i koden): Dim totA1 As Integer, totA2 As Integer, totA3 As Integer til: Dim totA1, totA2, totA3 - så skulle problemet være løst - har prøvet!
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.