• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Koppelen van werkboeken

Status
Niet open voor verdere reacties.

Scallebe

Gebruiker
Lid geworden
29 okt 2014
Berichten
535
Beste ontwikkelaars,

Mijn situatie is de volgende :

Mijn werkboek is nu volledig klaar (dikwijls met de hulp van jullie specialisten, waarvoor nogmaals mijn dank :thumb:) en de gegevens van alle sheets zijn ingevoerd.

Het is een zeer uitgebreid werkboek met 7 sheets waarvan 6 met wel 57 verschillende kolommen.

Het werkboek staat in de Share-modus omdat 5 personen er moeten mee werken. Tot dusver geen probleem.

De grote baas wil nu in dit werkboek verschillende draaitabellen kunnen maken. Vooral met die 6 uitgebreide sheets zodat hij resultaten kan bekijken in bepaalde situaties.

Het probleem is echter wanneer het werkboek in share-modus staat dan kan hij dat niet omdat de knop voor draaitabel niet actief is. De share-modus uitschakelen is wel een optie maar liever niet.

Kan ik voor de baas een kopij zetten op zijn eigen pc en die dan koppelen met het origineel? Wij werken met een netwerk dus dat zou volgens mij moeten lukken.

Voorheen had ik een koppeling gecreëerd van zijn versie met het origineel voor enkel de totalen van het werkboek maar dat ging maar over 30 cellen wat dus vrij makkelijk realiseerbaar was. Eenmaal

ingesteld en done.

Nu zou dit eigenlijk voor de hele werkboek moeten vanwege zijn draaitabellen.

Ik kan natuurlijk alle cellen gaan koppelen met het origineel. Is er echter geen eenvoudigere manier om dit te realiseren?

Regelmatig worden er lijnen toegevoegd in het origineel en de baas zijn versie moet dus als dusdanig aangepast worden (met een update?).

Mijn vraag dus : hoe kan ik de twee volledige kopijen aan elkaar koppelen?

Met dank

Pascal
 
Als je een macro opneemt en hem dan op een andere manier opslaat en daar een knop voor maakt. Dan moet je alleen eigenlijk nog de savename variable maken
 
Pascal,

Je kunt inderdaad geen macro's of draaitabellen hebben in een shared file.
Echter, je kunt wel een macro en draaitabel hebben in een normaal bestand.
Met behulp van de macro kun je gewoon de shared file openen, de gegevens kopiëren en weer sluiten
waarna je de draaitabellen kan bijwerken.
Ik zou dus zeggen schrijf een macro voor de file die je aan de managers wil geven.

Veel Succes.
 
Eldendoorn, EenTouw,

Ik heb de macro aangemaakt en heb dan de code in een ActiveX opdrachtknop geplaatst (genaamd "Update") omdat een makro niet zou werken in een gedeelde werkboek. Klopt dit?

Hier is mijn code :

PHP:
Private Sub CommandButton21_Click()
'
' Update Macro
'

'
    ChDir "C:\Users\Pascal\Desktop"
    ActiveWorkbook.SaveAs Filename:="C:\Users\Pascal\Desktop\Kolonel.xlsm", _
        FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
    ActiveWorkbook.ExclusiveAccess
    ActiveWorkbook.Save
End Sub

Ik heb dit nu geprobeert op mijn PC thuis. Ik moet enkel de plaats waar het opgeslagen moet worden wijzigen op de juiste ChDir op het werk.

De ActiveX opdrachtknop staat in het origineel, wanneer de baas deze aanklikt dan zal hij een kopij krijgen naar de folder van zijn keuze en dan zal hij zijn draaitabellen kunnen aanmaken.
Telkens hij de originele werkboek opent moet hij maar eerst de "Update" knop aanklikken om de laatste gegevens te hebben.

Tot zo ver werkt dit dus prima.

Wanneer ik de "Update" knop een tweede keer aanklik dan vraagt hij mij om het reeds bestaande Excel-file te vervangen. Ik klik uiteraard ja omdat we de laatste versie moeten hebben.

Een tweede venster licht op bij de opdracht : ActiveWorkbook.ExclusiveAccess en weer klik ik op ja.

Kunnen deze twee niet opgenomen worden in de code, zodanig dat hij niet twee keer op ja moet klikken. maar dat het automatisch ja wordt?

Ook wil nog ook even terugkomen op mijn eerste vraag : is er echt geen mogelijkheid om twee volledige werkboeken met elkaar te koppelen? In dit geval de baas zijn kopij met het originele?

De baas zou dan zijn versie exclusief kunnen houden en bij openen een automatische update met het originele late uitvoeren.

Met dank

Pascal
 
Pascal,

Ik veronderstel dat er een gedeeld bestand bestaat dat steeds wijzigt. Dus van een directe koppeling kan geen
sprake zijn, of je neemt niet alle regels mee, of je hebt een aantal regels die leeg zijn maar wel worden meegenomen
in de draaitabel. Verder zou vooral als het bestand erg groot wordt de tijd die nodig is om het bestand bij te werken
veel te lang worden. Geen oplossing dus.
Ik stel voor.
- Je manager opent zijn bestand.
- De macro start automatich,
- Opent het gedeelde bestand.
- Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
- Sluit het gedeelde bestand.
- Werkt de draaitabellen bij.

Dit duurt een paar seconden en dan heeft je manager de laatste gegevens.
Om je een idee te geven hierbij een ruwe versie van de macro.

Code:
Public Sub BijwerkenGegevens()

Dim sBestand As String
Dim pv As PivotTable

' Opent het gedeelde bestand.
Workbooks.Open "C:\Excel\Workbooks\SharedFile.xlsx"

' Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
Workbooks("SharedFile.xlsx").Sheets("Data").Range("A1:G" & .Range("A10000").End(xlUp).Row).Copy
Workbooks("ManagersFils.xlsm").Sheets("Data").Range("A1").PasteSpecial Paste:=xlPasteValues

' Sluit het gedeelde bestand.
Workbooks("SharedFile.xlsx").Close

' Werkt de draaitabellen bij.
With Sheets("Draaitabellen")
    For Each pv In .PivotTables
        pv.RefreshTable
    Next
End With

End Sub

Veel Succes.
 
Elsendoorn,

Ik heb de code in een nieuwe module geplaatst en de nodige parameters aangepast maar er gebeurd niets. Mijn sharedfile is wel een .xlsm en geen xlsx of was het de bedoeling de juiste extensie te gebruiken?

Ik heb gewoon een nieuwe module gemaakt

PHP:
Public Sub BijwerkenGegevens()

Dim sBestand As String
Dim pv As PivotTable

' Opent het gedeelde bestand.
Workbooks.Open "C:\Users\Pascal\Desktop\CCF 15-2-2015\AGMA test.xlsm"

' Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
Workbooks("AGMA test.xlsm").Sheets("Data").Range("A1:G" & .Range("A10000").End(xlUp).Row).Copy
Workbooks("Kolonel test.xlsm").Sheets("Data").Range("A1").PasteSpecial Paste:=xlPasteValues

' Sluit het gedeelde bestand.
Workbooks("AGMA test.xlsm").Close

' Werkt de draaitabellen bij.
With Sheets("PIVOT apothekers")
    For Each pv In .PivotTables
        pv.RefreshTable
    Next
End With

End Sub

maar bij het openen van de werkbook gebeurt er niets.

Suggesties?

Bedankt
 
Pascal,

In het VBA project daar is behalve de objecten sheet1, sheet2 etc ook een object Thisworkbook.
Zet daar de macro in met als procedure naam Private Sub Workbook_Open()
Deze wordt bij openen automatisch uitgevoerd.

Veel Succes.
 
Aan Elsendoorn of andere specialisten

Elsendoorn en specialisten,

Je hebt mij vorige week de volgende code gegeven :

PHP:
Public Sub BijwerkenGegevens()

Dim sBestand As String
Dim pv As PivotTable

' Opent het gedeelde bestand.
Workbooks.Open "C:\Excel\Workbooks\SharedFile.xlsx"

' Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
Workbooks("SharedFile.xlsx").Sheets("Data").Range("A1:G" & .Range("A10000").End(xlUp).Row).Copy
Workbooks("ManagersFils.xlsm").Sheets("Data").Range("A1").PasteSpecial Paste:=xlPasteValues

' Sluit het gedeelde bestand.
Workbooks("SharedFile.xlsx").Close

' Werkt de draaitabellen bij.
With Sheets("Draaitabellen")
    For Each pv In .PivotTables
        pv.RefreshTable
    Next
End With

End Sub

Ik weet dat ik alles tussen " " de juiste parameters moet invullen.

in volgende lijn : Workbooks("SharedFile.xlsx").Sheets("Data").Range("A1:G" & .Range("A10000").End(xlUp).Row).Copy

Workbooks geen probleem.
Sheets heb ik meerdere : is het zo? (Apothekers, kinesisten, enz)?
Range : is het A1 tot kolom G (bij mij BG) en die tweede range a10000 zijn dit het aantal lijnen? Het aantal lijnen verschilt wel op de diverse sheets

of moet ik voor iedere sheet een apparte vba regel opmaken

en ten laatste : With Sheets("Draaitabellen")
al mijn draaitabellen tussen de haakjes plaatsen? (DT Apo, DT Kine, enz...)?

Of ook voor iedere draaitabel een apparte vba regel.

Thanks

Pascal
 
Laatst bewerkt:
Het is handiger om je verzoek in het oorspronkelijke topic te plaatsen. Bericht hier dus bijgevoegd.
 
Ok

Ik dacht als de vraag reeds was opgelost ik een nieuwe moest stellen.

Greetz

Pascal
 
IK krijg een error bij volgende code

Beste ontwikkelaars

Ik krijg een error bij het openen van mijn workbook :

In de regel Workbooks("Versie AGMA.xlsm").Sheets("Apothekers").Range("A1:BG" & .Range("A10000").End(xlUp).Row).Copy

.Range licht blauw op bij .Range("A10000") en een melding : Compileerfout : Ongeldige of niet-gekwalificeerde verwijzing


PHP:
Private Sub Workbook_Open()

Dim sBestand As String
Dim pv As PivotTable

' Opent het gedeelde bestand.
Workbooks.Open "C:\Users\Pascal\Desktop\Test voor update\Versie AGMA.xlsm"

' Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
Workbooks("Versie AGMA.xlsm").Sheets("Apothekers").Range("A1:BG" & .Range("A10000").End(xlUp).Row).Copy
Workbooks("Versie Kolonel.xlsm").Sheets("Apothekers").Range("A1").PasteSpecial Paste:=xlPasteValues

' Sluit het gedeelde bestand.
Workbooks("Versie AGMA.xlsm").Close

' Werkt de draaitabellen bij.
With Sheets("DT Apo")
    For Each pv In .PivotTables
        pv.RefreshTable
    Next
End With

End Sub

Wat doe ik fout

Bedankt

Pascal
 
Laatst bewerkt:
Ik denk dat je nog wat moet toevoegen ivm de locatie van het bestand:
bv:
Code:
"C:\Documents\Users\testmap\" & naam bestand
 
Bij nader inzien was ik dus mis.:)
Maar deze heeft meer kans van slagen denk ik zo:
voor regel 10:
Code:
  With Workbooks("Versie AGMA.xlsm").Sheets("Apothekers")
      .Range("A1:BG" & .Range("A10000").End(xlUp).Row).Copy 
  End With
 
Cobbe,

Ik ga het straks testen, moet ik dan een regel maken voor iedere sheet of kan ik alle sheets in Sheets plaatsen (Waar nu "Apothekers" staat)

En voor de draaitabellen?

Greetz

Pascal
 
Zolang je binnen dezelfde With ... End with blijft kan je deze verwijzing blijven gebruiken.
Draaitabellen is echt niet mijn ding.
 
Cobbe

Mijn code ziet er nu als volg uit :

PHP:
Private Sub Workbook_Open()

Dim sBestand As String
Dim pv As PivotTable

' Opent het gedeelde bestand.
Workbooks.Open "C:\Users\Pascal\Desktop\Test voor update\Versie AGMA.xlsm"

' Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
With Workbooks("Versie AGMA.xlsm")
End With
With Workbooks("Versie AGMA.xlsm").Sheets("Apothekers").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
Workbooks("Versie Kolonel.xlsm").Sheets("Apothekers").Range("A1").PasteSpecial Paste:=xlPasteValues
End With
With Workbooks("Versie AGMA.xlsm").Sheets("Kinesisten").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
Workbooks("Versie Kolonel.xlsm").Sheets("Kinesisten").Range("A1").PasteSpecial Paste:=xlPasteValues
End With
With Workbooks("Versie AGMA.xlsm").Sheets("MedGen").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
Workbooks("Versie Kolonel.xlsm").Sheets("MedGen").Range("A1").PasteSpecial Paste:=xlPasteValues
End With
With Workbooks("Versie AGMA.xlsm").Sheets("Tandartsen").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
Workbooks("Versie Kolonel.xlsm").Sheets("Tandartsen").Range("A1").PasteSpecial Paste:=xlPasteValues
End With
With Workbooks("Versie AGMA.xlsm").Sheets("Specialisten").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
Workbooks("Versie Kolonel.xlsm").Sheets("Specialisten").Range("A1").PasteSpecial Paste:=xlPasteValues
End With

' Sluit het gedeelde bestand.
Workbooks("Versie AGMA.xlsm").Close

' Werkt de draaitabellen bij.
With Sheets("DT Apo")
    For Each pv In .PivotTables
        pv.RefreshTable
    Next
End With

End Sub

En ik blijf steeds de melding krijgen Compileerfout : Ongeldige of niet-gekwalifiseerde verwijzing.

.Range in lijn 12 blijft blauw oplichten

En nu? :(

Groetjes

Pascal
 
Laatst bewerkt:
Ik zou er dit van maken:
Code:
Private Sub Workbook_Open()
 
Dim sBestand As String
Dim pv As PivotTable
 
' Opent het gedeelde bestand.
Workbooks.Open "C:\Users\Pascal\Desktop\Test voor update\Versie AGMA.xlsm"
 
' Maakt een kopie van de benodigde data en kopieert dat als waarden in het bestand van de baas.
With Workbooks("Versie AGMA.xlsm")
    .Sheets("Apothekers").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
 Workbooks("Versie Kolonel.xlsm").Sheets("Apothekers").Range("A1").PasteSpecial Paste:=xlPasteValues

    .Sheets("Kinesisten").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
 Workbooks("Versie Kolonel.xlsm").Sheets("Kinesisten").Range("A1").PasteSpecial Paste:=xlPasteValues

    .Sheets("MedGen").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
 Workbooks("Versie Kolonel.xlsm").Sheets("MedGen").Range("A1").PasteSpecial Paste:=xlPasteValues

    .Sheets("Tandartsen").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
 Workbooks("Versie Kolonel.xlsm").Sheets("Tandartsen").Range("A1").PasteSpecial Paste:=xlPasteValues

    .Sheets("Specialisten").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy
 Workbooks("Versie Kolonel.xlsm").Sheets("Specialisten").Range("A1").PasteSpecial Paste:=xlPasteValues
 
' Sluit het gedeelde bestand.
    .Close
End With
' Werkt de draaitabellen bij.
With Sheets("DT Apo")
    For Each pv In .PivotTables
        pv.RefreshTable
    Next
End With
 
End Sub
 
Cobbe,

Nieuwe error :(

Fout 438 tijdens uitvoering: Deze eigenschap of methode wordt niet ondersteund door dit project.

en dit voor volgende regel :

.Sheets("Apothekers").Range("A1:BG" & .Range("A36").End(xlUp).Row).Copy

Wat nu? :rolleyes:

Greetz

Pascal
 
Haal die punt eens weg voor Range.

Code:
.Sheets("Apothekers").Range("A1:BG" & Range("A36").End(xlUp).Row).Copy
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan