Toon posts:

[Excel] Verdwaald in excel documenten

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo medegebruikers,

Onder t mom ‘brainstormen’ leg ik graag jullie een Excel casus voor. Op mijn werk heb ik te maken met een woud aan excel doucmenten. Om het beeld te schetsen als ik bestand X open, is deze gekoppeld aan 6 andere excel documenten. Die 6 documenten zijn ( ja je raad het al) weer gekoppeld aan verschillende excel documenten. En dit gaat maar door. Wat nog een extra dimensie is dat er in de loop der jaren formules zijn aangemaakt die over verschillende excel documenten heen gaan. Dus je hebt niet alleen een koppeling naar een ander excel document, maar in het document X zitten ook verschillende formules die in de formule zelf naar andere excel documenten zoekt.

Zoals jullie begrijpen zie ik door de excel documenten het bos niet meer en hierdoor slinkt ook mijn inspiratie om het op te lossen, omdat het zoveel is en uiteraard heeft elk excel documentje ze doel maar toch.

Wellicht kunnen jullie wat inspiratie bieden !

  • MAX3400
  • Registratie: Mei 2003
  • Laatst online: 27-09 22:07

MAX3400

XBL: OctagonQontrol

#consolidate

Neemt niet weg dat ik geen probleemstelling zie in je startpost? Want je geeft zelf al aan: elk document heeft een doel.

Alternatief is: ga naar de allernieuwste Excel-versie, maak nieuwe Workbooks aan en ga zoveel mogelijk crap in 1 workbook zetten. Door de toename in het aantal rows & sheets, kan je nu 1 in document meer data kwijt dan voorheen in 10 documenten.

Vergeet ook niet dat dus onder water er ook tientallen/honderden (dynamische) macro's kunnen bestaan die ook verwijzingen hebben naar bestaande of automatische nieuwe Excel-bestanden.

Mijn advertenties!!! | Mijn antwoorden zijn vaak niet snowflake-proof


Verwijderd

Topicstarter
Het probleem is dat het onwerkbaar wordt. Omdat wanneer je ermee wil werken, dus een document op bewerken zet zodat ie alle data binnen haalt, dan moet je veelal minimaal 10 andere excel documenten openen om alles werkend te krijgen. Daarnaast vind ik het niet prettig werken wanneer daarnaast nog in formules over excel documenten heen gaat. Dit soort acties creëren in mijn beleving mogelijkheden om fouten te maken. Omdat het zoveel verschillende documenten betreft, die elk ook een X aantal tabbladen heeft is het behoorlijk moeilijk over te dragen bijvoorbeeld.

Bestaat er niet een mogelijkheid om een "moeder" document te maken, die alleen de relevante tabbladen samenvoegt in 1 document en dan vanuit daar verder gaat met werken? Eis is wel dat deze verbinding actief is, dat als iemand wat in een onderliggend document wijzigt je het dan ook ziet in je "moeder-excel"".

  • breew
  • Registratie: April 2014
  • Laatst online: 21:16
Je kunt , uiteraard, een macro (of query) maken die die data voor je verzamelt...

De vraag achter de vraag is: waarom is alle data verspreid over tig documenten?

Ik snap dat e.e.a. historisch zo kan zijn gegroeid, maar wellicht is het tijd om nu eens vanaf 0 alles weer op te bouwen?
Doe eens een analyse in de trant van: Als ik nu nog niets had, en ik moet doen wat ik moet doen, hoe zou ik het dan aan willen pakken (greenfield)?

  • Nat-Water
  • Registratie: December 2013
  • Laatst online: 23:16
Jup, had ik ook.
De oplossing? Inventariseren, en zelf een nieuw sheet bouwen. Kan je het meteen goed doen. Ideaal klusje voor de vrijdagmiddag of de dagen tussen Kerst / Oud & Nieuw.

Balls have got to be one of the oldest toys. They've been round for a long time.
Gloria patri furnituribus In nomine IKEA!


Acties:
  • +2 Henk 'm!

  • Mx. Alba
  • Registratie: Augustus 2001
  • Laatst online: 01-10 11:31

Mx. Alba

hen/hun/die/diens

En wil je het wel in Excel blijven doen of is het niet veel beter om er een databeest voor op te zetten met een hufterproof interface?

Het is alleen een echte hetze als het uit Hetzerath komt, anders is het gewoon sprankelende ophef.


  • Clifdon
  • Registratie: Juni 2006
  • Laatst online: 29-09 21:26
Ik ben zelf ook bezig met allerlij excels om te bouwen naar een werkbaar principe. Er werd heel veel handmatig ingevuld en daardoor ontzettend veel fouten gemaakt. Documenten niet compleet enzo. Dus ik ben nu het complete overzicht aan het maken om het daarna te automatiseren. In mijn geval is het echt 3 dagen in de week voor 4 maanden lang werk geweest.

Het was voor mij de enige manier om structureel de formules te volgen. De data te verzamelen en in een basis sheet te verwerken. Je wordt er handig mee op een gegeven moment ook vbs ben ik steeds meer gaan gebruiken.

Always look on the bright side of life.


Acties:
  • +1 Henk 'm!

  • desmond
  • Registratie: Januari 2004
  • Niet online
@Clifdon Signature checks out :-D

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Is het wellicht mogelijk om wanneer je meerdere grote / zware exceldocumenten heb om deze separaat te draaien en bv in het document wat je gebruikt voor je afsluiting / analyse of daar alleen de benodigde resultaten over te nemen (live)?

Hierdoor is je hoofddocument niet onnodig groot maar heb je wel de gewenste informatie in het document om je verdere werkzaamheden uit te voeren?

Acties:
  • 0 Henk 'm!

  • Boeryepes
  • Registratie: Januari 2016
  • Niet online
@Lenno11 ik heb hiervoor een migratiescript (VBA) ontwikkeld die de huidige links uit de excel files verzameld en in een 2e stap de huidige links vervangt door nieuwe links. De logica is niet heel moeilijk als je thuis bent in Excel

The biggest communication problem is we do not listen to understand. We listen to reply.


Acties:
  • +1 Henk 'm!

  • Killah_Priest
  • Registratie: Augustus 2001
  • Laatst online: 01-10 10:36
Excel is niet bedoeld om als relationele database in te zetten, dat is zo te zien wwl wat er aan de hand is. Ipv de oplossing binnen de excel hoek te zoeken is het doorgaans beter om hiervoor gewoon een database inclusief applicatie voor in te richten.

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 21:16
Verwijderd schreef op dinsdag 12 december 2017 @ 08:39:
Is het wellicht mogelijk om wanneer je meerdere grote / zware exceldocumenten heb om deze separaat te draaien en bv in het document wat je gebruikt voor je afsluiting / analyse of daar alleen de benodigde resultaten over te nemen (live)?

Hierdoor is je hoofddocument niet onnodig groot maar heb je wel de gewenste informatie in het document om je verdere werkzaamheden uit te voeren?
ja dat kan.. of het handig is, is een tweede... beheer van al die gekoppelde zaken is vaak een drama. zorg dat je alles goed documenteert!!

had je met google onderstaande al gevonden?
https://support.office.co...S&ocmsassetID=HP010342302

[ Voor 7% gewijzigd door breew op 12-12-2017 10:55 ]


Acties:
  • 0 Henk 'm!

  • Witte
  • Registratie: Februari 2000
  • Laatst online: 29-07 11:23
Wij gebruiken losse excel-documenten voor parameters en opzoeklijstjes etc.. Deze gebruiken we in veel end-user excels, maar al deze end-user excels hebben een parameter-tab die gevuld wordt op het moment dat je je end-user excel sheet opent. Een vrij eenvoudige macro doet dit, en deze meldt als de bron niet wordt gevonden. Je kan dan wél doorwerken, zei het met wellicht verouderde gegevens.
Je hebt dan wel de lusten, niet de lasten.Formules verwijzen zo nooit naar andere worksheets.
Je moet niet verder dan 2 diep gaan: je hebt end-user sheets en parameter sheets. Daar moet je het mee doen.

Houdoe


Acties:
  • 0 Henk 'm!

  • theredspecial
  • Registratie: Juli 2002
  • Niet online
Albantar heeft een goed punt. Misschien is dit een mooi moment om over te stappen naar een database programma, met wat interface en formulieren die de gebruikers begrijpen. Dat lijkt misschien een grote tijdsinvestering, maar als je dat nu doet, betaald het zich terug. Het onderhoud aan al die Excels is geen sinecure denk ik. En, op een gegeven moment klapt het Excel kaartenhuis ineen. En ik denk dat de performance van het geheel meer lijkt op een fiets dan een trein ;)

Bij veel bedrijven die ik ken, zijn gewoon Access licenties aanwezig, dus dat zou een logische keuze kunnen zijn.

True republicanism is the sovereignty of the people. There are natural and imprescriptible rights which an entire nation has no right to violate. Vive La Republique!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Boeryepes schreef op dinsdag 12 december 2017 @ 09:09:
@Lenno11 ik heb hiervoor een migratiescript (VBA) ontwikkeld die de huidige links uit de excel files verzameld en in een 2e stap de huidige links vervangt door nieuwe links. De logica is niet heel moeilijk als je thuis bent in Excel
Kun je een leeg document of het vba stuk delen zodat ik het wellicht kan repruceren?

Kun je het mailen naar me?

Acties:
  • 0 Henk 'm!

  • Boeryepes
  • Registratie: Januari 2016
  • Niet online
zie onder de basiscode om links te vinden/lezen: (eerst gewonen formules, dan charts, pivots en defined names. De migratielogica kun je dan bedenken als het schrijven ipv lezen. De migratielogica kan ik je niet geven.

De SetNamedRange is een eigen wrapper om het gebruik van defined names wat resilience mee te geven omdat VBA geen compiletime checks doet op valide defined names.

De gebruikte defined names (de hoofdletterwoorden) zijn de cellen/arrays in mijn XLS waarin de gevonden defines worden opgeslagen zodat ik ze kan valideren voordat de migratie wordt gedaan.

Zoals alles tegenwoordig is dit in elkaar gezet door te googlen en zelf te proberen.

Visual Basic: filename
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
 Sub ListLinks(pFile As Workbook, ByRef numLinkedFiles As Variant)

    Dim wb As Workbook, sh
    Dim rng1 As Range, rng2 As Range, rng3 As Range, rArea As Range
    Dim chr As ChartObject, chr1 As Chart
    Dim chrSrs As Series
    Dim PivCh As PivotTable
    Dim FirstAddress As String, chrTitle As String
    Dim ShProt As String
    Dim nameCnt As Long
    Dim FndRngLink As Boolean, FndChrLink As Boolean, FndNameLink As Boolean, FndPivLink As Boolean
    Dim i As Long
    Dim aLinks As Variant
    Dim lnk As Variant
    
    aLinks = pFile.LinkSources()
    If Not IsEmpty(aLinks) Then
        For Each lnk In aLinks
            SetNamedRange "FILES_files", "\" & pFile.name, numLinkedFiles + 1
            SetNamedRange "FILES_OLD_links", lnk, numLinkedFiles + 1
            SetNamedRange "FILES_TYPE_links", "FORMULAS", numLinkedFiles + 1
            numLinkedFiles = numLinkedFiles + 1
        Next
    End If

    For Each sh In pFile.Sheets

        Select Case sh.Type
        Case xlWorksheet
            If sh.ProtectContents = True Then
                ' Try unprotecting without password
                sh.Unprotect ""
                If sh.ProtectContents = True Then
                    SetNamedRange "FILES_files", "\" & pFile.name, numLinkedFiles + 1
                    SetNamedRange "FILES_sheets", sh.name, numLinkedFiles + 1
                    SetNamedRange "FILES_OLD_links", "WARNING: Cannot unprotect sheet -> Cannot check links.", numLinkedFiles
                    numLinkedFiles = numLinkedFiles + 1
                    GoTo nextSheet
                End If
            End If
            
            'look at formula cells in each worksheet
            Set rng1 = Nothing
            Set rng2 = Nothing
            Set rng3 = Nothing

            ' Charts
            For Each chr In sh.ChartObjects
                For Each chrSrs In chr.Chart.SeriesCollection
                    If InStr(chrSrs.Formula, ".xls") <> 0 Then
                        'look in open and closed workbooks
                        FndChrLink = True
                        SetNamedRange "FILES_files", "\" & pFile.name, numLinkedFiles + 1
                        SetNamedRange "FILES_sheets", sh.name, numLinkedFiles + 1
                        SetNamedRange "FILES_TYPE_links", "CHART SERIES", numLinkedFiles + 1
                        SetNamedRange "FILES_WHERE_links", chrSrs.name, numLinkedFiles + 1
                        SetNamedRange "FILES_WHAT_links", "'" & chrSrs.Formula, numLinkedFiles + 1
                        numLinkedFiles = numLinkedFiles + 1
                    End If
                Next chrSrs

                If chr.Chart.HasTitle Then
                    chr.Activate
                    chrTitle = CStr(ExecuteExcel4Macro("GET.FORMULA(""Title"")"))
                    If InStr(chrTitle, ".xls") <> 0 Then
                        'look in open and closed workbooks
                        FndChrLink = True
                        SetNamedRange "FILES_files", "\" & pFile.name, numLinkedFiles + 1
                        SetNamedRange "FILES_sheets", sh.name, numLinkedFiles + 1
                        SetNamedRange "FILES_TYPE_links", "CHART TITLE", numLinkedFiles + 1
                        SetNamedRange "FILES_WHERE_links", "Row " & chr.TopLeftCell.Row, numLinkedFiles + 1
                        SetNamedRange "FILES_WHAT_links", "'" & chrTitle, numLinkedFiles + 1
                        numLinkedFiles = numLinkedFiles + 1
                     End If
                End If
            Next chr

            'Pivot Tables
            For Each PivCh In sh.PivotTables
                If InStr(PivCh.SourceData, ".xls") > 0 Then
                    'objFSOfile.writeline "Pivot Table," & PivCh.name & "," & sh.name & "," & Right$(aLinks(i), Len(aLinks(i)) - InStrRev(aLinks(i), "\")) & "," & aLinks(i) & ",'" & PivCh.SourceData
                    FndPivLink = True
                    SetNamedRange "FILES_files", "\" & pFile.name, numLinkedFiles + 1
                    SetNamedRange "FILES_sheets", sh.name, numLinkedFiles + 1
                    SetNamedRange "FILES_TYPE_links", "PIVOT TABLE SOURCE DATA", numLinkedFiles + 1
                    SetNamedRange "FILES_WHERE_links", PivCh.TableRange1(1, 1).Address, numLinkedFiles + 1
                    SetNamedRange "FILES_WHAT_links", PivCh.SourceData, numLinkedFiles + 1
                    numLinkedFiles = numLinkedFiles + 1
                    
                End If
            Next
        Case Else
            MsgBox ("what is sheet with type '" & sh.Type & "'?")
End Select
nextSheet:
    Next sh

    'Named ranges
    If pFile.Names.count = 0 Then
    Else
        For nameCnt = 1 To pFile.Names.count
            If InStr(pFile.Names(nameCnt), ".xls") <> 0 Then
                FndNameLink = True
                SetNamedRange "FILES_files", "\" & pFile.name, numLinkedFiles + 1
                SetNamedRange "FILES_TYPE_links", "DEFINED NAMES", numLinkedFiles + 1
                SetNamedRange "FILES_WHERE_links", pFile.Names(nameCnt).NameLocal, numLinkedFiles + 1
                SetNamedRange "FILES_WHAT_links", "'" & pFile.Names(nameCnt), numLinkedFiles + 1
                numLinkedFiles = numLinkedFiles + 1
            End If
        Next nameCnt
    End If

End Sub

The biggest communication problem is we do not listen to understand. We listen to reply.


Acties:
  • 0 Henk 'm!

  • Stoelpoot
  • Registratie: September 2012
  • Niet online
@Mx. Alba heeft gelijk wat mij betreft. Dit is geen goede use case voor Excel en het zal onwerkbaar blijven. Het is een heel goed idee om naar een vorm van relationele database over te stappen. Eventueel via Access, of een gespecialiseerd pakket voor... boekhouding? Klantenbeheer?
Pagina: 1