Kopieren tablad met behoud van Macro en link naar Macro.

Sky81

Gebruiker
Lid geworden
1 jun 2018
Berichten
5
Goede middag,

Ben al even aan het zoeken.
Ik wil, via een macro, vanuit 1 Excel file (work.xlsm) 1 of meer tablad(en) kopiëren vanuit een 2e Excel file (source.xlsm)
in voorbeeld dan tabbladen: "Bron 2" en "bron 3"
De macro komt in "work.xlsm" en opent dan "source.xlsm" ("source.xlsm" word eens in de zoveel tijd met een nieuw tabblad geupdate.)
Dit zodat "work.xlsm" de nieuwste tabbladen heeft die in "source.xslm" later erbij zijn gezet.
Veel tabbladen hebben macro's die op dat specifieke tabblad zelf staan.
die macro's kopiëren ook gewoon mee, echter de link/verwijzing die onder de knop zit op het tabblad, blijft dan naar "source.xlsm" linken i.p.v. het gekopieerde tabblad in "work.xslm"

Als ik handmatig een tabblad verplaats dan gaat de link wel goed, maar dan verdwijnt de tabblad uit "source.xlsm" en dat is dan weer niet de bedoeling.

Is het mogelijk om met een macro automatisch aan te passen zodat macro gebruikt word die dan op tabblad in "work.xlsm" staat?
Ik kan tabblad verplaatsen van "source.xslm" naar "work.xslm" en dan "source.xlsm" afsluiten zonder op te slaan, maar dat is denk ik niet de netste manier.

Ik heb even de 2 voorbeeld files gemaakt, met een paar tabbladen met een simpele macro erin, Hoop dat het duidelijk is wat ik zoek.

Ik vraag niet om de gehele code om te synchroniseren, daar ben ik wel mee bezig, maar het gaat nu alleen om de link/verwijzing
na het synchroniseren zou dus bij tabblad bron 3: 'source.xlsm!Bron3.B3' -- > 'work.xlsm!Bron3.B3' moeten zijn.

Alvast bedankt.
 

Bijlagen

Neem een macro op waarbij je de koppeling die ontstaat (Gegevens, Koppelingsbeheer) omlegt van het bron bestand naar het bestand waar het werkblad heen gekopieerd is, dan zie je hoe je dit kunt doen.
 
dat had ik idd al geprobeerd, maar de opname is alleen de move functie gebruikt,


Code:
Application.WindowState = xlMaximized
    Sheets("Bron 2").Select
    Sheets("Bron 2").Move After:=Workbooks("work.xlsm").Sheets(3)

ook ff intern in het bestand geprobeerd.
Code:
 Sheets("Bron 2").Select
    Sheets("Bron 2").Move Before:=Sheets(3)

Daar staat dus niets in over aanpassen van de verwijzing naar macro van het gekopieerde blad
 
Geef een Macro nooit een naam die verward kan worden met een object in Excel, zoals B4 of C4.
Als je een macronaam begint met "M_" gaat het nooit mis.
Gebruik voor werkboeken met macro's de extensie xlsb

Zet in de openingsmacro van werkboek 'work' de volgende code: en pas het pad aan

Code:
Private Sub Workbook_Open()
  For Each it In Sheets
    c00 = c00 & "|" & it.Name
  Next

  With GetObject("D:\Downloads\source.xlsm")
    For Each it In .Sheets
      If InStr(c00 & "|", "|" & it.Name & "|") = 0 Then it.Copy , ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
    Next
  End With
End Sub
 
Terug
Bovenaan Onderaan